我使用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;
答案 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);
这将为您的所有按钮提供所提供的前景色和背景色。