2012-01-21 55 views
5

Tôi đang cố gắng thay đổi màu nền của một nút thành màu đỏ nhưng có vẻ như nó không hoạt động. Tôi dán mã mẫu. Nếu có ai có thể cho tôi biết cách sửa mã của tôi, vui lòng trợ giúp.gtk (mm) 3 thay đổi màu nền của nút

#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 đây là cách tôi giải quyết:

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

và nội dung của filename.css là:

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

Tôi không thấy điều gì sai trong mã, tôi cho rằng nó có nhiều khả năng nhất với chủ đề của bạn. Nếu bạn có thể đặt chủ đề mặc định, bạn có thể thấy thay đổi về màu nút. –

+0

Tôi không nghĩ rằng một chủ đề gtk3 có thể chặn nền của một nút được thay đổi – giuspen

+0

Nền của các nút có thể được thay đổi ít nhất trong số các bản phát hành mới nhất. Điểm mấu chốt đối với tôi khi làm việc này là chỉ định GTK_STYLE_PROVIDER_PRIORITY_USER khi thêm nhà cung cấp. Nếu không, hình nền có vẻ ưu tiên hơn màu nền –

Trả lời

0

tôi không có kinh nghiệm với C++, nhưng tôi sử dụng python , trong python bạn phải làm điều này:

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

có thể bằng C++ bạn phải làm điều này

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

hi và cảm ơn bạn đã trả lời. chúng tôi phát hiện ra vấn đề là tất cả trong chủ đề, cách duy nhất là sử dụng một css và tải nó. Tôi sẽ tìm kiếm giải pháp và cập nhật câu hỏi với kết quả. – giuspen

Các vấn đề liên quan