css - Gtk3 Css 按钮状态

标签 css gtk3

我在 Ubuntu natty 上使用 gtk+-3.2.3 和 css。在下面的代码中,我有一个按钮,它以绿色背景颜色和蓝色文本开头。当我将鼠标悬停在它上面时,背景颜色会变为红色,但字体颜色不会像我指定的那样变为白色。此外,当按住按钮时,背景颜色变为橙色,但字体颜色不会变为我指定的青色。为什么会这样?这是窗口管理器覆盖了我的代码吗?

/*Compile with:
  gcc -Wall -o cssbutton2 `pkg-config --cflags --libs gtk+-3.0` cssbutton2.c
*/

#include <gtk/gtk.h>

int main(int argc, char *argv[] )
{
  GtkWidget *window;
  GtkWidget *button;
  GtkCssProvider *provider;
  GdkDisplay *display;
  GdkScreen *screen;

  gtk_init (&argc, &argv);

  window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  gtk_window_set_default_size(GTK_WINDOW(window), 280, 200);
  g_signal_connect (GTK_WIDGET (window), "destroy",
                        G_CALLBACK (gtk_main_quit), NULL);

  button = gtk_button_new_with_label("CssButton");  
  gtk_widget_set_name (GTK_WIDGET(button), "mybutton");        
  gtk_widget_set_halign (GTK_WIDGET(button),GTK_ALIGN_CENTER);
  gtk_widget_set_valign (GTK_WIDGET(button),GTK_ALIGN_CENTER);
  gtk_widget_set_size_request(GTK_WIDGET(button), 200, 120);
  gtk_container_add(GTK_CONTAINER(window),button); 

  provider = gtk_css_provider_new ();
  display = gdk_display_get_default ();
  screen = gdk_display_get_default_screen (display);                                                                                  
  gtk_style_context_add_provider_for_screen (screen, GTK_STYLE_PROVIDER (provider),    GTK_STYLE_PROVIDER_PRIORITY_USER);

  gtk_css_provider_load_from_data (GTK_CSS_PROVIDER (provider),
                            " GtkWindow {\n"                          
                            "   background-color: tan;\n"
                            "}\n"
                            " GtkButton {\n"
                            "   -GtkWidget-focus-line-width: 0;\n"
                            "   border-radius: 15;\n"
                            "   font: Sans 23;\n"
                            "   color: #00008B;\n"                                       
                            "   background-color: green;\n"
                            "}\n"
                            " .button:hover {\n"
                            "   background-color: red;\n"
                            "   color: white;\n"
                            "}\n"
                            " .button:hover:active {\n"
                            "   background-color: orange;\n"
                            "   color: cyan;\n"
                            "}\n", -1, NULL);

  g_object_unref (provider);
  gtk_widget_show_all(window);
  gtk_main();
  return(0);
}

最佳答案

我刚刚在 Ubuntu 12.04 (gtk+ 3.4.2) 上测试了这个,并且在将 background-image: none; 添加到 GtkButton 样式定义之后,这就像您描述的是所需的行为。也许只是 GTK 中的一个错误,此后已修复?

关于css - Gtk3 Css 按钮状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8946936/

相关文章:

css - 如何设置 12 列、宽度为 960 像素但行宽为 1280 的 Bootstrap 网格?

css - Perl/Gtk3,给窗口添加背景图片

c++ - Gtk::Window 在将我的 gtkmm2 移植到 gtkmm3 应用程序时显示并退出

javascript - 使用 C/Vala 编写的 GTK 3 应用程序的动态和静态脚本

javascript - 在html中包含外部js和css文件

css - 如何在 Angular 中动态切换样式?

jquery - z-index 的问题

css - 在 Squarespace 中访问 tweek.less 值

python - 设置 Gtk3 MenuItem 的悬停背景颜色

c - 将 Glade3 按钮单击重新映射到 python 中的 C 函数