今天我开始用GTK3编程,我遇到了问题。我无法更改按钮背景颜色,我想在单击按钮后更改它。这是我的代码:
void pushButton( GtkWidget* button )
{
gtk_button_set_label( GTK_BUTTON( button ), "new_text" );
GdkRGBA color = {.0, .0, .0, 1.0};
gtk_widget_override_background_color ( button, GTK_STATE_NORMAL, &color );
}
gtk_button_set_label()运行良好并更改按钮标签。但颜色仍然相同(应该是黑色)。
自版本3.16起,gtk_widget_override_background_color已被弃用,不应在新编写的代码中使用。如果您希望更改窗口小部件呈现其背景的方式,则应使用自定义CSS样式。
答案 0 :(得分:1)
您需要向Button添加自定义CSS:
GdkDisplay *display;
GdkScreen *screen;
display = gdk_display_get_default ();
screen = gdk_display_get_default_screen (display);
GtkCssProvider *provider;
provider = gtk_css_provider_new ();
gtk_style_context_add_provider_for_screen (screen, GTK_STYLE_PROVIDER (provider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
gtk_css_provider_load_from_data(provider, CSS, -1, NULL);
g_object_unref (provider);
用一些CSS替换CSS来修改Button
答案 1 :(得分:0)
我将采取另一种方法。问题是要更改单个按钮的背景色。因此,我只为一个按钮更改它。 (不过,我不确定最佳做法)。
startActivityForResult(intent, TEXT_REQUEST)
,否则颜色设置无效使用CSS类(在本例中为background-image:none
,因为css直接提供给了按钮(仅),因此一切(*
)是只有按钮。
*
尽管:请注意,但是此代码将在每次按下按钮时每次创建一个新的提供程序。我认为最好将提供程序存储在某个位置,然后在需要时将其删除并添加到(样式)上下文中。