我正在寻找一种方法来改变存储在特定变量中的Gtk :: Entry的颜色。我使用CSS方式指定一个条目的颜色,我发现这个代码改变了应用程序中所有条目的颜色,但这不是我想要的:
styleContext = get_style_context();
provider = Gtk::CssProvider::create();
styleContext->add_provider_for_screen(Gdk::Screen::get_default(), provider,
GTK_STYLE_PROVIDER_PRIORITY_USER);
provider->load_from_data(".entry { background: red; }");
答案 0 :(得分:1)
您可以获取该特定Gtk :: Entry的样式上下文,它可能看起来像:
auto style_context = entryWidget.get_style_context();
try {
auto red_background = Gtk::CssProvider::create();
red_background->load_from_data(" entry { background: red; } ");
style_context->add_provider(red_background, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
} catch (Gtk::CssProviderError& err) {
std::cerr << err.what() << "\n";
}
将样式应用于窗口小部件有时很棘手。如果是这种情况,请尝试将选择器从标记entry
更改为*
。
API文档建议可以在css中使用id选择器并将css-provider应用于父窗口。我无法做到这一点。