在Glade(版本3.8.5,因为我的目标是gtk 2.24)中,我创建了一个位于vbox行中的标签。我已将标签的背景颜色(在“属性”中)设置为蓝色,标签显示为填充整行。但蓝色背景只延伸到文本范围,而不是标签的整个宽度。
如何让蓝条延伸到面板的边缘?
答案 0 :(得分:1)
我刚才读到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。