2016-10-25 21 views
1

私は最近、CでGTK +でプログラミングを始めました。 私のコードにGdkToggleButtonがあり、CSSにスタイリングを追加したいと思います。 私はGTK3 +のドキュメントのほとんどをここでhttps://developer.gnome.org/gtk3/stableと読んだことがありますが、私のケースに合ったものは何も見つかりませんでした。 実際にCSSに関するドキュメントの一部がありますが、実際にCSSファイルを解析する部分が見つかりませんでした。CSSスタイルのGTK +

私がやりたいことは、CSSや他の方法でGdkToggleButtonの色を変更することです。

私はCSSファイルをどこに置くか、それを解析してウィジェットに追加する方法を知りたいと思います。

実際にボタンの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_data()とあなたのプログラムに組み込まれたカスタムCSSを読み込むことができ

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

を解決しました。 GtkCssProviderは一般にCSSを読み込む方法です。

次に、GtkWidgetのスタイルコンテキストを取得し、add_provider()を呼び出します。 APPLICATION優先度を使用してください。とにかく追加するものです(アプリケーション固有のCSS)。

また、save()コールは必要ありません。

+0

はい私の問題は私が使用していた優先順位にあった。ありがとうございました –