【发布时间】:2016-07-21 09:46:22
【问题描述】:
我想加载一个 glade 文件并更改所有切换按钮的颜色(类“GtkToggleButton”,我想更改“按下”颜色)切换按钮是其中的许多子子元素之一林间空地文件。 这里是我用来加载 .css 和 .glade 的 C 代码片段:
void on_minute_pressed(GtkWidget *button)
{
GtkCssProvider *cssProvider = gtk_css_provider_new ();
gtk_css_provider_load_from_path(cssProvider,"./test.css",NULL);
GtkBuilder *builder = gtk_builder_new();
gtk_builder_add_from_file (builder, "minute_dialog.glade", NULL);
GtkWidget *window= GTK_WIDGET(gtk_builder_get_object(builder, "MinuteWizard"));
gtk_window_set_transient_for (window,main_window);
gtk_style_context_add_provider(gtk_widget_get_style_context(window),cssProvider,GTK_STYLE_PROVIDER_PRIORITY_USER);
gtk_builder_connect_signals(builder, NULL);
gtk_widget_show(window);
g_object_unref(builder);
}
这里是我目前使用的 .css:
.button {
padding: 30;
background-color: shade (@bg_color, 55);
}
togglebutton entry {
color: 900185;
}
button:active {
background-color: #0274d9;
}
当前发生的情况:新窗口加载很好,但似乎我在 .css 中写入的内容并不重要,它不会改变窗口元素的外观。我可以看到 .css 已加载,因为我收到如下警告:
Gtk-WARNING **: 主题解析错误: test.css:2:13: Not using units is 已弃用。假设为 'px'。
怎么了?我需要将 .css 分别应用于每个子组件吗?
【问题讨论】:
-
Not using units is deprecated来自旧的 CSS 文件,其中一些大小仅由数字指定,例如border=1。当前的 gtk 版本要求将其指定为1px。请注意,如果您的主题太旧,您可能会遇到 gtk 比 3.20 更新的问题!不过,它不应该影响您的主要问题。