更改存储在特定变量中的Gtk :: Entry的颜色

时间:2018-02-08 18:01:04

标签: c++ css user-interface colors gtk

我正在寻找一种方法来改变存储在特定变量中的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; }");

1 个答案:

答案 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应用于父窗口。我无法做到这一点。