2016-05-02 16 views
0

Ich bin neu in der GTK-Welt und ich kann keine Lösung für dieses kleine Problem finden.So entfernen Sie Schaltflächenhintergrundschatten in GTK? (C)

Ich habe diese Schaltfläche: button2

Aber ich möchte, dass der kleine Schatten hinter der Schaltfläche entfernt werden kann. Ich hätte dieses Ergebnis gern: button2

Wie kann ich das lösen?

Knopf Code:

sum_button = gtk_button_new_from_stock(GTK_STOCK_ADD); 
/**/ 
style = gtk_widget_get_style(sum_button); 
style->bg[GTK_STATE_PRELIGHT] = style->bg[GTK_STATE_NORMAL]; 
gtk_widget_set_style(sum_button, style); 
/**/ 
gtk_widget_modify_bg(sum_button, GTK_STATE_NORMAL, &color2); 
gtk_button_set_relief(GTK_BUTTON(sum_button), GTK_RELIEF_HALF); 
g_signal_connect(G_OBJECT(sum_button), "clicked", G_CALLBACK(PrintNumber),&t_data); 
gtk_box_pack_start(GTK_BOX (hbox3), sum_button, TRUE, TRUE, 0); 

Antwort

2

Versuchen

gtk_button_set_relief(GTK_BUTTON(sum_button), GTK_RELIEF_NONE); 

Aber dann können Sie die Hintergrundfarbe:

Wenn die Grenze Erleichterung der Schaltfläche auf keine festgelegt ist, es wie ein wirkt Label wie in es ist "transparent", es hat die gleiche BG-Farbe wie sein Eltern-Container.

einen Blick auf diesen Thread nehmen: https://stackoverflow.com/a/1709648/1606345

+0

Ok ich es auf diese Weise versuchen, : 'gtk_button_set_relief (GTK_BUTTON (Summe_Button), GTK_RELIEF_NONE); gtk_widget_modify_bg (sum_button, GTK_STATE_NORMAL, & color2); 'Aber es funktioniert nicht, weil es keinen farbigen Hintergrund setzt –

+0

Also ich lese das ist nicht möglich, was ich tun möchte. Recht? Oder vielleicht auf andere Art und Weise ... –

+1

Richtig, können Sie den Knopf in einen grünen Behälter setzen ?, kann das funktionieren. –

0

Wenn Sie neuen Code schreiben, betrachten GTK 3, in dem Sie diese direkt mit CSS tun können:

GtkCssProvider *provider = gtk_css_provider_new(); 
gtk_css_provider_load_from_data(provider, 
    "button {" 
    " border: 0px;" 
    " background-color: green;" 
    " color: white;" 
    "}", -1, &error); 
GtkStyleContext *context = gtk_widget_get_style_context(button); 
gtk_style_context_add_provider(context, provider, 
    GTK_STYLE_PROVIDER_PRIORITY_USER); 
+0

Ich begann mit gtk3. Ich habe 'Fehler' als ** GError ** * Fehler angegeben; und ich habe deinen Code ausprobiert, wenn ich 0 Fehler kompiliere aber anscheinend nichts macht. Der Knopf ändert seinen Stil nicht. Was könnte das Problem sein? –

+0

Ich löste 'GtkButton' als Klasse in einer 'style.css' Datei, die mit der Funktion gtk_css_provider_load_from_path() geladen wurde. Aber es funktioniert nicht, wenn ich eine 'enter_button' Klasse (oder ID) spezifizieren will, wenn 'enter_button' der Name des GtkButton ist. Irgendwelche Lösungen? –