我想用CSS来设计一个GtkLabel。我想更改标签的颜色和字体大小。这里是我的C代码:如何使用CSS设计GtkLabel?
#include <gtk/gtk.h>
int main(int argc, char *argv[]) {
gtk_init(&argc, &argv);
GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
GtkWidget *label = gtk_label_new("Label");
GtkCssProvider *cssProvider = gtk_css_provider_new();
gtk_css_provider_load_from_path(cssProvider, "theme.css", NULL);
gtk_style_context_add_provider(gtk_widget_get_style_context(window),
GTK_STYLE_PROVIDER(cssProvider),
GTK_STYLE_PROVIDER_PRIORITY_USER);
g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);
gtk_container_add(GTK_CONTAINER(window), label);
gtk_widget_show_all(window);
gtk_main();
}
这是我在theme.css
CSS,目前这只能改变字体颜色:
GtkLabel {
color: green;
}
我编译:
gcc `pkg-config gtk+-3.0 --cflags` test.c -o test `pkg-config --libs gtk+-3.0`
然而,当我运行代码,我得到黑色文本。如果我更改theme.css
以使用小部件名称或CSS类而不是GtkLabel
,它仍然不起作用。但是,如果我使用*
而不是GtkLabel
,它可以工作(尽管我不希望这适用于所有内容)。这意味着C代码应该是正确的,并且CSS有问题。
您忽略了'gtk_css_provider_load_from_path()'中的错误。使用最后的参数;如果函数返回'FALSE',检查它看看有什么问题。我有一种感觉,选择器不是'GtkLabel',你错过了';'... – andlabs
@andlabs我添加了';'(我的代码有它,只是不是问题),我检查了返回值。这是真的。 – gsingh2011
嗯......尝试将样式提供程序添加到*标签的*样式上下文中,而不是*窗口的*。 – andlabs