2012-01-21 6 views
5

Sto cercando di cambiare il colore di sfondo di un pulsante in rosso, ma non sembra funzionare. Incollo il codice di esempio. Se qualcuno può dirmi come risolvere il mio codice, per favore aiutatemi.gtk (mm) Cambiamento di colore di sfondo a 3 pulsanti

#include <gtkmm.h> 

// g++ simple.cc -o simple `pkg-config gtkmm-3.0 --cflags --libs` 

int main(int argc, char *argv[]) 
{ 
    Gtk::Main kit(argc, argv); 
    Gtk::Window window; 
    Gtk::Button button("TEST"); 
    button.override_background_color(Gdk::RGBA("red")); 
    window.add(button); 
    window.show_all(); 
    Gtk::Main::run(window); 
    return EXIT_SUCCESS; 
} 

UPDATE: ok ecco come ho risolto:

mr_screen = Gdk::Screen::get_default(); 
mr_style_context = mp_window->get_style_context(); 
mr_css_provider = Gtk::CssProvider::create(); 
mr_css_provider->load_from_path(Glib::build_filename(m_glade_dir_path, "filename.css")); 
mr_style_context->add_provider_for_screen(mr_screen, mr_css_provider, GTK_STYLE_PROVIDER_PRIORITY_USER); 

e il contenuto di filename.css è:

column-header .button { 
    background-image: -gtk-gradient (linear, 
     left top, 
     left bottom, 
     from (#51cccc), 
     color-stop (0.5, darker (#51cccc)), 
     to (#51cccc)); 
} 
+1

non vedo nulla di male nel codice, penso che abbia più probabilità di fare con voi il tema. Se è possibile impostare il tema predefinito, è possibile vedere la modifica nel colore del pulsante. –

+0

Non pensavo che un tema gtk3 possa bloccare lo sfondo di un pulsante da modificare – giuspen

+0

Lo sfondo dei pulsanti può essere modificato almeno delle ultime versioni. Il punto chiave per me nel far funzionare questo è stato specificando GTK_STYLE_PROVIDER_PRIORITY_USER quando si aggiunge un provider. In caso contrario, l'immagine di sfondo sembra avere la priorità sul colore di sfondo –

risposta

0

Non ho esperienza con C++, ma io uso pitone , in Python devi fare questo:

button.override_background_color(Gtk.StateFlags.NORMAL, Gdk.RGBA(1.0 , 0.0 , 0.0, 1.0)) 
.210

magari in C++ che dovete fare questo

button.override_background_color(GTK_STATE_FLAGS_NORMAL, Gdk::RGBA(1.0 , 0.0 , 0.0, 1.0)); 
+0

ciao e grazie per la tua risposta. abbiamo scoperto che il problema è tutto nel tema, l'unico modo è usare un css e caricarlo. Cercherò la soluzione e aggiornerò la domanda con il risultato. – giuspen