有人可以用css为一个GTK小部件设置一个简单的例子吗?我无法弄清楚如何查看文档:
#include <gtk/gtk.h> int main(int argc,char *argv[]) { gtk_init(&argc,&argv); GtkWidget *window; GtkWidget *button; GtkCssProvider *cssProvider; gtk_css_provider_load_from_path(cssProvider,"./gtkExample2.css",NULL); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); button = gtk_button_new_with_label("GTK Button"); gtk_style_context_add_provider(gtk_widget_get_style_context(window),cssProvider,GTK_STYLE_PROVIDER_PRIORITY_USER); g_signal_connect_swapped(window,"delete-event",G_CALLBACK(gtk_widget_destroy),window); gtk_container_set_border_width(GTK_CONTAINER(window),20); gtk_container_add(GTK_CONTAINER(window),button); gtk_widget_show(window); gtk_widget_show(button); gtk_main(); return 1; }
解决方法
在GTK3中不知道关于CSS样式的一件事(除了它经常打破开发人员更喜欢修复东西 – 尊重CSS标准 – 而不是通过版本保持兼容性).
但是,我可以告诉你这是错的:
g_signal_connect_swapped(window,window);
当主窗口关闭时,你真正希望它停止GTK.这样做是这样的:
g_signal_connect(window,"destroy",G_CALLBACK(gtk_main_quit),NULL);
另一个评论是你正在打电话
gtk_widget_show(window); gtk_widget_show(button);
小部件树完成后(即,您停止在容器中添加小部件以及在顶层窗口中添加容器),这可以简化为:
gtk_widget_show_all(window);
还请注意,有效的程序在成功时应返回0,并使用非零值报告错误.