配置为Ubunutu Server 18.04 LTS / Xorg / openbox / GTK3
我一直在努力弄清楚为什么我不能让GtkCssProvider来处理最基本的项目。如果一直在处理不同的示例,但是这里与另一篇类似。
这是将显示标签的应用程序代码。
#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 0123456789");
GtkCssProvider * cssProvider = gtk_css_provider_new();
g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);
if( gtk_css_provider_load_from_path(cssProvider, "csstest.css", NULL) )
{
gtk_style_context_add_provider(gtk_widget_get_style_context(label),
GTK_STYLE_PROVIDER(cssProvider),
GTK_STYLE_PROVIDER_PRIORITY_USER);
gtk_container_add(GTK_CONTAINER(window), label);
gtk_widget_show_all(window);
gtk_main();
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
.CSS文件很简单:
GtkLabel {
color: green;
}
Run Code Online (Sandbox Code Playgroud)
一篇文章指出gtk_style_context_add_provider()应替换为gtk_style_context_add_provider_for_screen()调用。两者似乎都没有任何作用。标签以默认样式显示,黑灰色。那么,将Css样式应用于小部件的窍门是什么?
我的要求是要具有可以设置为不同小部件的不同样式。我假设我可以在CSS中创建某种类型的类构造,这将允许我通过gtk_style_context_add_provider()调用将不同的主题应用于相同的小部件。但是我也无法弄清楚。我看到了如何在Css中为特定的命名小部件(通过ID)设置样式,但这似乎只是预定义的statc定义。关于此的任何建议将有所帮助。
标签的CSS选择器是label,不是GtkLabel:
label {
color: green;
}
Run Code Online (Sandbox Code Playgroud)
请参阅GtkLabel API参考,其中列出了有效的选择器。
您还应该使用GTK Inspector测试CSS片段。
您可能还需要阅读GTK中CSS处理的API参考,以及GtkStyleContext文档。
| 归档时间: |
|
| 查看次数: |
651 次 |
| 最近记录: |