2016-11-29 66 views
1

我正在使用GTK + 3(使用C語言)創建一個使用按鈕數組的Battleship遊戲,但我遇到了一些相關問題到他們的顏色。我已經改變了我的數組的背景顏色,現在,我想改變按鈕本身的顏色。我試圖使用gtk_widget_override_color()函數來做到這一點,但似乎它不能在我的代碼中工作。 你可以看看,也許建議其他功能,它可以工作? ,我正在使用的代碼是到這裏:如何使用Gtk + 3定義GtkButton的顏色(在C中)

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是類型結構GdkRGBA的,它已被定義有以下幾行:

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

回答

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); 

這將爲您提供的所有按鈕提供前景色和背景色。