我正在尝试将按钮的背景颜色更改为红色,但似乎不起作用。 我粘贴示例代码。 如果有人可以告诉我如何修复我的代码,请帮助。
#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;
}
更新: 好的,这就是我的解决方法:
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);
并且filename.css的内容是:
column-header .button {
background-image: -gtk-gradient (linear,
left top,
left bottom,
from (#51cccc),
color-stop (0.5, darker (#51cccc)),
to (#51cccc));
}
答案 0 :(得分:1)
确实,我很难理解,CssProvider是处理此类问题的正确方法。您不需要使用林间空地,甚至很好的是在代码中包含CSS,就像这样
#include <gtkmm.h>
Gtk::Button* button = new Gtk::Button("Test");
Glib::RefPtr<Gtk::CssProvider> css_provider = Gtk::CssProvider::create();
css_provider->load_from_data(
"button {background-image: image(cyan);}\
button:hover {background-image: image(green);}\
button:active {background-image: image(brown);}");
button->get_style_context()->add_provider(
css_provider, GTK_STYLE_PROVIDER_PRIORITY_USER);
您必须处理背景图像,因为背景颜色与默认背景图像重叠,因此不能更改。 我有Ruby-GNOME2
的智慧答案 1 :(得分:0)
我没有使用c ++的经验,但我使用python,在python中你必须这样做:
button.override_background_color(Gtk.StateFlags.NORMAL, Gdk.RGBA(1.0 , 0.0 , 0.0, 1.0))
也许在c ++中你必须这样做
button.override_background_color(GTK_STATE_FLAGS_NORMAL, Gdk::RGBA(1.0 , 0.0 , 0.0, 1.0));