如何在 GLib 对象上设置枚举 属性?
How do you set an enum property on a GLib object?
我正在尝试在 GtkCellRendererText 对象上设置 "ellipsize" 枚举 属性。
我正在尝试按如下方式使用 g_object_set_property
:
GtkCellRenderer *renderer = gtk_cell_renderer_text_new ();
GValue val = G_VALUE_INIT;
g_value_init (&val, G_TYPE_ENUM);
g_value_set_enum (&val, PANGO_ELLIPSIZE_END);
g_object_set_property (G_OBJECT(renderer), "ellipsize", &val);
但是,我在 运行 时收到一条错误消息:
(infog:27114): GLib-GObject-WARNING **: 12:24:29.848: ../../../../gobject/gvalue.c:188: cannot initialize GValue with type 'GEnum', this type is abstract with regards to GValue use, use a more specific (derived) type
如何获取从 G_TYPE_ENUM
派生的 enum PangoEllipsizeMode
的类型 ID?
改用 g_object_set
有效:
g_object_set (G_OBJECT(renderer), "ellipsize", PANGO_ELLIPSIZE_END, NULL);
您需要使用 属性 期望的枚举类型初始化 GValue
容器。 G_TYPE_ENUM
是通用的抽象枚举类型。
GtkCellRendererText
的 "ellipsize" 属性 需要 PangoEllipsizeMode
枚举值,其 GType 为 PANGO_TYPE_ELLIPSIZE_MODE
。
GtkCellRenderer *renderer = gtk_cell_renderer_text_new ();
GValue val = G_VALUE_INIT;
g_value_init (&val, PANGO_TYPE_ELLIPSIZE_MODE);
g_value_set_enum (&val, PANGO_ELLIPSIZE_END);
g_object_set_property (G_OBJECT(renderer), "ellipsize", &val);
// Always unset your value to release any memory that may be associated with it
g_value_unset (&val);
我正在尝试在 GtkCellRendererText 对象上设置 "ellipsize" 枚举 属性。
我正在尝试按如下方式使用 g_object_set_property
:
GtkCellRenderer *renderer = gtk_cell_renderer_text_new ();
GValue val = G_VALUE_INIT;
g_value_init (&val, G_TYPE_ENUM);
g_value_set_enum (&val, PANGO_ELLIPSIZE_END);
g_object_set_property (G_OBJECT(renderer), "ellipsize", &val);
但是,我在 运行 时收到一条错误消息:
(infog:27114): GLib-GObject-WARNING **: 12:24:29.848: ../../../../gobject/gvalue.c:188: cannot initialize GValue with type 'GEnum', this type is abstract with regards to GValue use, use a more specific (derived) type
如何获取从 G_TYPE_ENUM
派生的 enum PangoEllipsizeMode
的类型 ID?
改用 g_object_set
有效:
g_object_set (G_OBJECT(renderer), "ellipsize", PANGO_ELLIPSIZE_END, NULL);
您需要使用 属性 期望的枚举类型初始化 GValue
容器。 G_TYPE_ENUM
是通用的抽象枚举类型。
GtkCellRendererText
的 "ellipsize" 属性 需要 PangoEllipsizeMode
枚举值,其 GType 为 PANGO_TYPE_ELLIPSIZE_MODE
。
GtkCellRenderer *renderer = gtk_cell_renderer_text_new ();
GValue val = G_VALUE_INIT;
g_value_init (&val, PANGO_TYPE_ELLIPSIZE_MODE);
g_value_set_enum (&val, PANGO_ELLIPSIZE_END);
g_object_set_property (G_OBJECT(renderer), "ellipsize", &val);
// Always unset your value to release any memory that may be associated with it
g_value_unset (&val);