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));
}
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. –
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
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 –