2016-10-25 91 views
1

好吧,我最近開始用C編寫GTK +。 我的代碼中有一個GdkToggleButton,我想用css添加樣式。 我已經閱讀了幾乎所有的GTK3 +文檔https://developer.gnome.org/gtk3/stable,但沒有找到適合我的案例。 其實有關於CSS的文檔的一部分,但我找不到實際解析CSS文件的部分。GTK中的CSS樣式+

我想要做的就是用CSS或任何其他方法更改GdkToggleButton的顏色。

我想知道把CSS文件放在哪裏以及如何解析它並將它添加到Widget中。

我實際上可以得到GdkRGBA(顏色)的按鈕,但更改沒有效果。 這裏是我如何更改GdkRGBA的按鈕。

GdkRGBA *color ; 
GtkWidget *button; 
GtkStyleContext *context; 

color = gdk_rgba_copy (color); // I don't know to initialize GdkRGBA :(

context = gtk_widget_get_style_context(button);  
button = gtk_toggle_button_new_with_label ("Hello World"); 
gtk_style_context_get_color(context, 
          GTK_STATE_FLAG_NORMAL, 
          color); 
gdk_rgba_parse(color, 
       "red"); 

解決

gtk_css_provider_load_from_path (cssProvider, 
            "/home/shadow_m2/code.css", 
            NULL); 
gtk_style_context_add_provider (context, 
            GTK_STYLE_PROVIDER(cssProvider), 
            GTK_STYLE_PROVIDER_PRIORITY_USER); // I had used wrong priority on first try 
gtk_style_context_save (context); 
+0

您正在尋找GtkCssProvider。 – andlabs

+0

我也試過了,它加載了一個css文件,但不知道如何使用GtkCssProvider設計一個窗口小部件。 @andlabs –

+0

您可以使用GtkCssProvider從內存中加載CSS。爲了將它應用到小部件,請參閱GtkStyleContext(所有GtkWidgets都有)。 – andlabs

回答

1

您可以加載嵌入在你的程序與gtk_css_provider_load_from_data()自定義CSS。 GtkCssProvider是如何加載CSS的一般。

然後,您將獲得GtkWidget的樣式上下文並在其上調用add_provider()。使用APPLICATION優先;這就是你要添加的東西(特定於應用程序的CSS)。

另外save()調用是沒有必要的。

+0

是的,我的問題是我使用過的優先級。謝謝 –