使用 gtk_css_provider_load_from_data() 后如何将小部件的背景颜色重置为默认状态
How to reset the background color of a widget to default state after using gtk_css_provider_load_from_data()
我曾经通过 gtk_widget_override_background_color
设置和重置小部件的背景颜色。此功能现已弃用,因此我想改用 GtkCssProvider
.
我知道我可以更改输入字段的背景颜色,例如
GtkCssProvider *provider = gtk_css_provider_new ();
gtk_css_provider_load_from_data (provider,
".entry { background: #927373}", -1, NULL);
gtk_style_context_add_provider (gtk_widget_get_style_context (entry_field),
GTK_STYLE_PROVIDER (provider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
一切正常。但是,和以前一样,在某些情况下我想将背景颜色恢复为默认状态。
使用
provider = gtk_css_provider_get_default ();
gtk_style_context_add_provider (gtk_widget_get_style_context (entry_field),
GTK_STYLE_PROVIDER (provider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
没有任何效果,使用
gtk_css_provider_load_from_data (provider,
".entry { background: #none}", -1, NULL);
不是正确的方法,因为小部件中有默认背景颜色(例如白色(取决于主题),使用背景后:#none 它将变为灰色)。
如何在不使用已弃用函数的情况下实现重置为默认颜色?
我已经通过添加和删除 class:
解决了这个问题
GtkStyleContext *context = gtk_widget_get_style_context (entry);
添加:
gtk_style_context_add_class (context, "newclass");
gtk_css_provider_load_from_data (provider,
".entry.newclass { background: #927373}", -1, NULL);
删除:
gtk_style_context_remove_class (context, "newclass");
我曾经通过 gtk_widget_override_background_color
设置和重置小部件的背景颜色。此功能现已弃用,因此我想改用 GtkCssProvider
.
我知道我可以更改输入字段的背景颜色,例如
GtkCssProvider *provider = gtk_css_provider_new ();
gtk_css_provider_load_from_data (provider,
".entry { background: #927373}", -1, NULL);
gtk_style_context_add_provider (gtk_widget_get_style_context (entry_field),
GTK_STYLE_PROVIDER (provider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
一切正常。但是,和以前一样,在某些情况下我想将背景颜色恢复为默认状态。 使用
provider = gtk_css_provider_get_default ();
gtk_style_context_add_provider (gtk_widget_get_style_context (entry_field),
GTK_STYLE_PROVIDER (provider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
没有任何效果,使用
gtk_css_provider_load_from_data (provider,
".entry { background: #none}", -1, NULL);
不是正确的方法,因为小部件中有默认背景颜色(例如白色(取决于主题),使用背景后:#none 它将变为灰色)。
如何在不使用已弃用函数的情况下实现重置为默认颜色?
我已经通过添加和删除 class:
解决了这个问题GtkStyleContext *context = gtk_widget_get_style_context (entry);
添加:
gtk_style_context_add_class (context, "newclass");
gtk_css_provider_load_from_data (provider,
".entry.newclass { background: #927373}", -1, NULL);
删除:
gtk_style_context_remove_class (context, "newclass");