如何使用Gtk + 3定义GtkButton的颜色(在C中)

时间:2016-11-29 15:48:31

标签: c gcc gtk3

我使用GTK + 3(使用C语言)使用一系列按钮创建Battleship游戏,但我有一些与它们颜色相关的问题。我已经改变了我的阵列的背景颜色,现在,我想改变按钮本身的颜色。我尝试使用gtk_widget_override_color()函数来执行此操作,但似乎它在我的代码中不起作用。 你能看一看并建议其他功能吗? 我正在使用的代码在这里:

for(i=0;i<(x[0].n*x[0].n);i++){
    gtk_widget_modify_bg(GTK_WIDGET(buttons[i]),GTK_STATE_NORMAL,&color);
    gtk_widget_override_color(GTK_WIDGET(buttons[i]),GTK_STATE_NORMAL,&color2);
}

颜色变量属于GdkColor类型,并且已使用gdk_color_parse()定义,而color2属于struct GdkRGBA类型,并且已使用以下行定义:

color2.alpha = 0.8;
color2.blue = 0.819;
color2.red = 0;
color2.green = 0.807;

1 个答案:

答案 0 :(得分:1)

你应该使用CSS。类似的东西:

GtkCssProvider *provider = gtk_css_provider_new ();
gtk_css_provider_load_from_data (provider,
    "button { color: #123456; background-color: blue; }", -1, &error);
gtk_style_context_add_provider_for_screen (gdk_screen_get_default (),
    provider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);

这将为您的所有按钮提供所提供的前景色和背景色。