css - 不要让 gtk3 中的 css 与空地一起工作

标签 css c gtk3 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 **: 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/

相关文章:

html - 列表元素与上一行带有边框的元素对齐

c - 为什么 gcc 使用 -O0 进行一些优化

CRC16 (Modbus) 计算----无法将十六进制值传递给函数

python gtk 3.0 是否不支持从辅助线程访问 GUI?

Python GtkBuilder 无法从 Glade 3.14 导入 Box 小部件

python - 导入Gtk并关闭窗口后访问Gdk区域

javascript - 将带有javascript函数的span标签添加到html表中

html - 字体未正确呈现

media-queries - 在为台式机/平板电脑/智能手机设计时使用最小宽度或最大宽度更好/更有效吗

c - 在 Unix 中崩溃时自动释放互斥锁