2015/12/29
GTK+ で Label の背景色を変更する
Windowless Widget は背景色を変更することができない
Label
, Button
, Paned
, Frame
などの Windowless Widget は背景色を変更することが出来ないそうです。そのため、以下のようなコードを書いても背景はデフォルトのままです。
1 2 3 4 5 | // 以下は Gtkmm のコードですが、GTK+ でも同様に書くと動作しません Gtk::Label* label = Gtk::manage( new Gtk::Label()); label->modify_bg(Gtk::STATE_NORMAL, bg_color); label->set_label(message); widget->add(*label); |
背景色は EventBox で変える
ではどうするのかと言うと、以下のようにEventBox
に Label
等を入れ子にして、 EventBox
の背景色を変えるという方法を使うようです。1 2 3 4 5 6 | Gtk::Label* label = Gtk::manage( new Gtk::Label()); label->set_label(message); Gtk::EventBox* ebox = Gtk::manage( new Gtk::EventBox()); ebox->modify_bg(Gtk::STATE_NORMAL, bg_color); ebox->add(*label); widget->add(*ebox); |
参考