2012-01-21 32 views
5

ボタンの背景色を赤に変更しようとしていますが、動作しないようです。 サンプルコードを貼り付けます。 誰かが私のコードを修正する方法を教えていただけたら助けてください。gtk(mm)3ボタンの背景色の変更

#include <gtkmm.h> 

// g++ simple.cc -o simple `pkg-config gtkmm-3.0 --cflags --libs` 

int main(int argc, char *argv[]) 
{ 
    Gtk::Main kit(argc, argv); 
    Gtk::Window window; 
    Gtk::Button button("TEST"); 
    button.override_background_color(Gdk::RGBA("red")); 
    window.add(button); 
    window.show_all(); 
    Gtk::Main::run(window); 
    return EXIT_SUCCESS; 
} 

UPDATE: は、ここで私が解決方法ですOK:

mr_screen = Gdk::Screen::get_default(); 
mr_style_context = mp_window->get_style_context(); 
mr_css_provider = Gtk::CssProvider::create(); 
mr_css_provider->load_from_path(Glib::build_filename(m_glade_dir_path, "filename.css")); 
mr_style_context->add_provider_for_screen(mr_screen, mr_css_provider, GTK_STYLE_PROVIDER_PRIORITY_USER); 

とfilename.cssの内容は次のとおりです。

column-header .button { 
    background-image: -gtk-gradient (linear, 
     left top, 
     left bottom, 
     from (#51cccc), 
     color-stop (0.5, darker (#51cccc)), 
     to (#51cccc)); 
} 
+1

を行う必要があり、C++で、私はそれがあなたのテーマをどうする可能性が最も高いと思います。デフォルトのテーマを設定することができれば、ボタンの色の変化を見ることができます。 –

+0

gtk3のテーマがボタンの背景を変更するのをブロックできるとは思わなかった – giuspen

+0

ボタンの背景は、少なくとも最新のリリースで変更できます。この作業をする上での重要なポイントは、プロバイダを追加するときにGTK_STYLE_PROVIDER_PRIORITY_USERを指定することでした。それ以外の場合、背景画像は背景色よりも優先されるようです。 –

答えて

0

私はC++での経験がないが、私のpythonを使用、あなたはこれを行う必要があります:

button.override_background_color(Gtk.StateFlags.NORMAL, Gdk.RGBA(1.0 , 0.0 , 0.0, 1.0)) 

は多分あなたは私のコードで間違って何も表示されません。この

button.override_background_color(GTK_STATE_FLAGS_NORMAL, Gdk::RGBA(1.0 , 0.0 , 0.0, 1.0)); 
+0

こんにちは、お返事ありがとうございます。私たちは問題がすべてテーマであることを発見しました。唯一の方法はCSSを使用して読み込むことです。私は解決策を探して結果に質問を更新します。 – giuspen