在林间空地上制作GtkLabel填充宽度
在Glade(针对GTK2.24的版本为3.8.5)中,我创建了一个位于vbox一行中的标签。我已经将标签的背景色(在属性中)设置为蓝色,并且标签显示为填充整行。但蓝色背景仅延伸到文本范围,而不是标签的整个宽度在林间空地上制作GtkLabel填充宽度,gtk,glade,Gtk,Glade,在Glade(针对GTK2.24的版本为3.8.5)中,我创建了一个位于vbox一行中的标签。我已经将标签的背景色(在属性中)设置为蓝色,并且标签显示为填充整行。但蓝色背景仅延伸到文本范围,而不是标签的整个宽度 如何使蓝色条延伸到面板边缘?我不久前读到Gtk标签实际上没有自己的颜色,但它们采用其背景控件的任何颜色。我不记得这段信息的来源,但我记得解决方案,即将标签放入Gtk EventBox中,并更改所述EventBox的颜色。我在我的gtk项目中测试了这个解决方案,结果很好 这是我用来改变En
如何使蓝色条延伸到面板边缘?我不久前读到Gtk标签实际上没有自己的颜色,但它们采用其背景控件的任何颜色。我不记得这段信息的来源,但我记得解决方案,即将标签放入Gtk EventBox中,并更改所述EventBox的颜色。我在我的gtk项目中测试了这个解决方案,结果很好
这是我用来改变Engbox的颜色的函数,我用的是GTK和格莱德稍旧的版本,我使用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);
}
void GuiUtil::changeColor(Gtk::Widget*Widget,双r,双g,双b){
Glib::RefPtr colormap=widget->get_colormap();
Glib::RefPtr style=widget->get_style()->copy();
//状态正常(大部分时间)
{
颜色;
颜色。设置为(r,g,b);
颜色映射->alloc_颜色(颜色);
样式->设置背景(Gtk::状态正常,颜色);
}
//状态预亮(鼠标悬停时)
{
颜色;
颜色设置(r*0.9,g*0.9,b*0.9);
颜色映射->alloc_颜色(颜色);
样式->设置背景(Gtk::状态预照明,颜色);
}
//激活状态(单击时)
{
颜色;
颜色设置(r*0.8,g*0.8,b*0.8);
颜色映射->alloc_颜色(颜色);
样式->设置背景(Gtk::状态激活,颜色);
}
小部件->设置样式(样式);
}
据我所知,没有一种方法可以只用Glade来做这件事