2016-04-09 15 views
0

Heute beginne ich mit der Programmierung in GTK3, und ich habe ein Problem. Ich kann die Hintergrundfarbe der Schaltfläche nicht ändern, ich möchte sie nach einem Klick auf die Schaltfläche ändern. Hier ist mein Code:gtk3 Änderungstaste bg Farbe

void pushButton(GtkWidget* button) 
{ 
    gtk_button_set_label(GTK_BUTTON(button), "new_text"); 
    GdkRGBA color = {.0, .0, .0, 1.0}; 
    gtk_widget_override_background_color (button, GTK_STATE_NORMAL, &color); 
} 

gtk_button_set_label() arbeitet gut und ändert die Beschriftung der Schaltfläche. Aber die Farbe ist immer noch die gleiche (sollte schwarz sein).

gtk_widget_override_background_color ist seit Version 3.16 veraltet und sollte nicht in neu geschriebenem Code verwendet werden. Wenn Sie die Art ändern möchten, wie ein Widget seinen Hintergrund rendert, sollten Sie einen benutzerdefinierten CSS-Stil verwenden.

Antwort

1

Sie müssen benutzerdefinierte CSS Button hinzuzufügen:

GdkDisplay *display; 
GdkScreen *screen; 
display = gdk_display_get_default(); 
screen = gdk_display_get_default_screen (display); 

GtkCssProvider *provider; 

provider = gtk_css_provider_new(); 

gtk_style_context_add_provider_for_screen (screen, GTK_STYLE_PROVIDER (provider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); 

gtk_css_provider_load_from_data(provider, CSS, -1, NULL); 

g_object_unref (provider); 

Wo Sie CSS mit einigen CSS ersetzen Sie die Taste

+0

Dank zu ändern. Ich versuche, CSS zu verwenden, aber das scheint schwieriger zu sein, die nur Funktion verwenden. Sie sagen, dass die Funktion gtk_widget_override_background_color() seit Version 3.16 veraltet ist. Dort habe ich in meinem Debian gtk 3.14, aber gtk_widget_override_background_color() funktioniert nicht. (Entschuldigung für mein Englisch wieder!) – Daniel

+0

Es ist schwieriger, aber es fügt auch eine Menge Flexibilität, wie Sie Hover-Animationen erstellen und so weiter ... – mame98

+0

Eine andere Sache wäre, dass Sie den Namen der Schaltfläche mit gtk_widget_set_name () so können Sie nur diesen Knopf stylen, ohne alle anderen Knöpfe in Ihrer Anwendung zu beeinflussen. – mame98

Verwandte Themen