GTK +中的CSS样式

时间:2016-10-25 19:37:47

标签: css gtk gtk3

好的,我最近开始在C中使用GTK +进行编程。 我的代码中有一个GdkToggleButton,我想用css为它添加样式。 我在这里阅读了几乎所有的GTK3 +文档https://developer.gnome.org/gtk3/stable,但没有找到适合我的情况。 实际上有一部分关于CSS的文档,但是我找不到实际解析css文件的部分。

我想做的就是使用CSS或任何其他方法更改GdkToggleButton的颜色。

我想知道在哪里放置css文件以及如何解析它并将其添加到Widget。

我实际上可以获得一个按钮的GdkRGBA(颜色),但更改没有效果。 以下是我如何更改按钮的GdkRGBA。

GdkRGBA *color ;
GtkWidget *button;
GtkStyleContext *context;

color = gdk_rgba_copy (color); // I don't know to initialize GdkRGBA :(

context = gtk_widget_get_style_context(button);    
button = gtk_toggle_button_new_with_label ("Hello World");
gtk_style_context_get_color(context,
                            GTK_STATE_FLAG_NORMAL,
                            color);
gdk_rgba_parse(color,
                "red");

解决

gtk_css_provider_load_from_path (cssProvider,
                                    "/home/shadow_m2/code.css",
                                    NULL);
gtk_style_context_add_provider (context,
                                    GTK_STYLE_PROVIDER(cssProvider),
                                    GTK_STYLE_PROVIDER_PRIORITY_USER); // I had used wrong priority on first try
gtk_style_context_save (context);

1 个答案:

答案 0 :(得分:1)

您可以使用add_provider()加载程序中嵌入的自定义CSS。 GtkCssProvider是一般加载CSS的方法。

然后你获得GtkWidget的样式上下文并在其上调用APPLICATION。使用save()优先级;那就是你正在添加的内容(特定于应用程序的CSS)。

此外,{{1}}来电也不是必需的。