質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
GTK+

GTK+とはGUIを作るために作られた、とても使いやすく機能に富んだツールキットです。クロスプラットフォームによる互換性と、使いやすいAPIを備えています。

Q&A

解決済

1回答

1791閲覧

[GTK+ 3]ウインドウ背景色の変更ができない

Tlllune

総合スコア15

GTK+

GTK+とはGUIを作るために作られた、とても使いやすく機能に富んだツールキットです。クロスプラットフォームによる互換性と、使いやすいAPIを備えています。

0グッド

0クリップ

投稿2019/02/08 13:06

GTK+3で、ウインドウの背景色を設定できなくて困っています。
CSSを使って設定をするようなのですが、いろいろなドキュメントを参照して試行錯誤してもうまく行きません。
どうすればいいのでしょうか?

以下ソースコードです。

style.css

GtkWindow{   background-color: rgb(0,200,255); /*背景色にしたい*/ }

main.cpp

// g++ -o main main.cpp $(pkg-config --cflags --libs gtk+-3.0) #include <gtk/gtk.h> #include <gdk/gdk.h> int main(int argc, char** argv) { GtkWidget *window; gtk_init (&argc,&argv); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_widget_set_app_paintable (window,TRUE); gtk_window_set_position (GTK_WINDOW(window),GTK_WIN_POS_CENTER); gtk_widget_set_size_request (window,180,160); gtk_window_set_title (GTK_WINDOW(window),"title"); g_signal_connect (G_OBJECT(window),"destroy",G_CALLBACK(gtk_main_quit),NULL); //-----CSS----- GtkCssProvider *provider; provider = gtk_css_provider_new (); GdkDisplay *display; GdkScreen *screen; 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_APPLICATION); gsize bytes_written, bytes_read; const gchar* home = "style.css"; GError *error = 0; gtk_css_provider_load_from_path (provider,g_filename_to_utf8(home, strlen(home), &bytes_read, &bytes_written, &error),NULL); g_object_unref (provider); //--- gtk_widget_show_all(window); gtk_main(); return 0; }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

GTK+のスタイルシートはほとんど触った事がないのですが、ちょっと試してみました。
2点修正する箇所があります。

style.css

css

1window { 2  background-color: rgb(0,200,255); /*背景色にしたい*/ 3}

「GtkWindow」(クラス名)ではなく、「window」(css名)で指定しなければならないようです。
クラス名とcss名の関連付け(例えば、GtkLabelのcss名は何か)は、リファレンスマニュアルの「CSS nodes」に書かれているようです。

もしくは、gtk_widget_class_get_css_name関数で調べる事もできます。

gtk_widget_set_app_paintable

上記の修正に加え、gtk_widget_set_app_paintableの引数をFALSEにするか、コメントアウトすると、background-colorが反映されます。

以下、gtk_widget_set_app_paintable関数のリファレンスのGoogle翻訳です。

これはウィジェットへのヒントであり、GTK +コアの動作には影響しません。 多くのウィジェットはこのフラグを完全に無視します。 GtkEventBoxやGtkWindowなど、フラグに注意を払うウィジェットの場合、効果はウィジェットの背景のデフォルトのテーマ描画を抑制することです。 (ウィジェットの子は引き続き描画されます。)その後、アプリケーションはウィジェットの背景を描画することに全責任を負います。

テーマ描画を抑制しているので、当然cssの設定も反映されないはずです。

投稿2019/02/12 12:45

編集2019/02/12 12:47
katsuko

総合スコア3462

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問