在Glade(我以gtk 2.24为目标的版本3.8.5)中,我创建了一个标签,该标签位于vbox的一行中。我已经将标签的背景色(在“属性”中)设置为蓝色,并且标签似乎填满了整个行。但是蓝色背景仅延伸到文本范围,而不延伸到标签的整个宽度。
如何使蓝色条延伸到面板的边缘?
我前一阵子读到,Gtk标签实际上没有自己的颜色,但是它们使用背景小部件所具有的任何颜色。我不记得这些信息的来源,但我确实记得解决方案,即将标签放在Gtk EventBox中并更改所述EventBox的颜色。我在gtk项目中测试了此解决方案,并取得了良好的效果。
这是我用来更改EventBox颜色的函数,顺便说一下,我使用的是较旧版本的Gtk和Glade,而我使用的是C ++,因此,如果您使用的是C,则必须找到每个函数的C等效项:
void GuiUtil::changeColor(Gtk::Widget* widget, double r, double g, double b) {
Glib::RefPtr<Gdk::Colormap> colormap = widget->get_colormap();
Glib::RefPtr<Gtk::Style> style = widget->get_style()->copy();
// STATE_NORMAL (most of the time)
{
Gdk::Color color;
color.set_rgb_p(r,g,b);
colormap->alloc_color(color);
style->set_bg(Gtk::STATE_NORMAL, color);
}
// STATE_PRELIGHT (when mouse hovers)
{
Gdk::Color color;
color.set_rgb_p(r*0.9,g*0.9,b*0.9);
colormap->alloc_color(color);
style->set_bg(Gtk::STATE_PRELIGHT, color);
}
// STATE_ACTIVE (when clicked)
{
Gdk::Color color;
color.set_rgb_p(r*0.8,g*0.8,b*0.8);
colormap->alloc_color(color);
style->set_bg(Gtk::STATE_ACTIVE, color);
}
widget->set_style(style);
}
据我所知,只有Glade不能做到这一点。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句