为结构初始化 GValue

Init GValue for a struct

我正在尝试从 GValue 中获取 GdkRGBA,但我无法用这种类型初始化 GValue

我尝试了以下代码:

GValue value;
g_value_init(value, G_TYPE_OBJECT);
gtk_style_context_get_property(style_context, "color", STATE_FLAG_NORMAL, &value);

但是我得到以下错误:

cannot initialize GValue with type 'GdkRGBA', the value has already been initialized as 'GObject'

我尝试了许多其他 G_TYPE_*,但我遇到了类似的错误。

如何初始化类型为 GdkRGBAGValue

尝试完全删除对 g_value_init 的调用——根据错误消息判断 gtk_style_context_get_property 似乎想要自行初始化 GValue

此外,我注意到有 a separate method defined on GtkStyleContext 专门用于检索前景色,因此这可能是一个合适的(或更可取的)替代方案:

GdkRGBA color;
gtk_style_context_get_color(style_context, GTK_STATE_FLAG_NORMAL, &color);