我编写了一个简单的函数,目的是更改GtkLabel的文本和颜色。 麻烦是(当然):它不起作用。 正确设置了“状态”中包含的文本,但未设置颜色。
我使用Pango属性进行设置,但是没有办法。 调用就像:_SetStatus(context,“ Running”,“ green”);
GUI_ERR_HDL _SetStatus(GuiContext *context, const gchar *status, const gchar *color) {
GtkLabel *lbl;
PangoAttrList *pngList;
PangoAttribute *pngFgColor;
GdkRGBA rgba;
guint16 r;
guint16 g;
guint16 b;
lbl=GTK_LABEL(gtk_builder_get_object(context->builder,
(gchar*)OPENSESSION_LBL_STATUS));
pngList=gtk_label_get_attributes(lbl);
gdk_rgba_parse(&rgba, color);
r=(guint16)rgba.red*255;
g=(guint16)rgba.green*255;
b=(guint16)rgba.blue*255;
pngFgColor=pango_attr_foreground_new(r,g,b);
pango_attr_list_change(pngList, pngFgColor);
gtk_label_set_attributes(lbl, pngList);
gtk_label_set_label(lbl, status);
return NO_ERR;
}
有什么想法吗?
谢谢。
Vincent。
答案 0 :(得分:1)
答案 1 :(得分:0)
在我的应用程序中,我这样做:
const static GdkRGBA rgba_color = {.red = 0.0, .green = 1.0, .blue = 0.0, .alpha = 1.0};
gtk_widget_override_color(label_xyz, GTK_STATE_FLAG_NORMAL, &rgba_color);
我在应用程序中没有使用任何Pango函数。