如何更改 gtkmm 组合框的 css 样式?
How do I change css styles of a gtkmm combobox?
只要小部件改变了它的状态,它就应该改变它的样式。我已经成功实现了信号化,但我不知道如何真正改变组合框的样式。
更改小部件样式的函数:
{
static Glib::RefPtr<Gtk::CssProvider> css{nullptr};
if(!css) {
css = Gtk::CssProvider::create();
css->load_from_data(
"button {background-color: #fff9ed;}\
button:hover {background-color: #fff9ed;}\
button:active {background-color: #fff9ed;}\
//changing background-color: to color: does not make any difference
combobox {color: @fg_color;background-color: #fff9ed;}\
.entry {color: #fff9ed;}\
checkbutton {background-color: #fff9ed;}\
checkbutton:checked {background-color: #fff9ed;}");
}
return css;
}
这会导致在组合框上形成一个非常小的框架。这是输出:
之前:
之后:
可以清楚地看到,背景发生了变化(请参阅角上带箭头的橙色提示)。但这没有用,因为实际的框覆盖了 99% 的背景。我还没有想出如何更改 atual 组合框按钮的样式,这也可以解决我的问题。
我找到了解决问题的办法。
我假设组合框的 'padding' 为 0px,所以我在 css 字符串中添加了 'padding: 2px;'。
只要小部件改变了它的状态,它就应该改变它的样式。我已经成功实现了信号化,但我不知道如何真正改变组合框的样式。
更改小部件样式的函数:
{
static Glib::RefPtr<Gtk::CssProvider> css{nullptr};
if(!css) {
css = Gtk::CssProvider::create();
css->load_from_data(
"button {background-color: #fff9ed;}\
button:hover {background-color: #fff9ed;}\
button:active {background-color: #fff9ed;}\
//changing background-color: to color: does not make any difference
combobox {color: @fg_color;background-color: #fff9ed;}\
.entry {color: #fff9ed;}\
checkbutton {background-color: #fff9ed;}\
checkbutton:checked {background-color: #fff9ed;}");
}
return css;
}
这会导致在组合框上形成一个非常小的框架。这是输出:
之前:
之后:
可以清楚地看到,背景发生了变化(请参阅角上带箭头的橙色提示)。但这没有用,因为实际的框覆盖了 99% 的背景。我还没有想出如何更改 atual 组合框按钮的样式,这也可以解决我的问题。
我找到了解决问题的办法。 我假设组合框的 'padding' 为 0px,所以我在 css 字符串中添加了 'padding: 2px;'。