2012-01-21 63 views
5

Estoy tratando de cambiar el color de fondo de un botón a rojo, pero parece que no funciona. Pego el código de ejemplo. Si alguien puede decirme cómo arreglar mi código, por favor ayuda.gtk (mm) 3 botón cambio de color de fondo

#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; 
} 

ACTUALIZACIÓN: bien aquí es como he resuelto:

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

y el contenido de filename.css es:

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

no veo nada malo en el código, creo que tiene más probabilidades de hacer contigo tema. Si puede establecer el tema predeterminado, puede ver el cambio en el color del botón. –

+0

No creo que un tema gtk3 pueda bloquear el fondo de un botón para cambiarlo – giuspen

+0

El fondo de los botones se puede cambiar al menos de las últimas versiones. El punto clave para mí para que esto funcione fue especificar GTK_STYLE_PROVIDER_PRIORITY_USER al agregar un proveedor. De lo contrario, la imagen de fondo parece tener prioridad sobre el color de fondo –

Respuesta

0

no tengo experiencia con C++, pero yo uso pitón , en python tienes que hacer esto:

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

tal vez en C++ que tiene que hacer esto

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

y gracias por su respuesta. descubrimos que el problema está en el tema, la única forma es usar un CSS y cargarlo. Buscaré la solución y actualizaré la pregunta con el resultado. – giuspen

Cuestiones relacionadas