我想加载一个空地文件并更改所有切换按钮的颜色(类“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 **: Theme parsing error: test.css:2:13: Not using units is deprecated. Assuming 'px'.
出了什么问题?我需要将 .css 分别应用到每个子组件吗?
最佳答案
好吧,我自己发现了问题所在:
根据gtk_style_context_add_provider的文档css 提供程序不会继承到子样式上下文。
因此,要么需要将 css 应用到每个小部件,要么使用 gtk_style_context_add_provider_for_screen改变整个屏幕的CSS:
gtk_style_context_add_provider_for_screen(gdk_screen_get_default(), GTK_STYLE_PROVIDER(cssProvider), GTK_STYLE_PROVIDER_PRIORITY_USER);
关于css - 不要让 gtk3 中的 css 与空地一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38500691/