GObject:如何将属性重置为默认值?

时间:2017-11-01 09:10:04

标签: gobject

我有一个GObject,它有一个GObject类型的属性。我知道我可以像这样设置这个属性:

g_object_set (G_OBJECT (my_object), "my-property", my_value_for_property, NULL);

但是如何将属性重置为默认值?可能这条线看起来很直观:

g_object_set_property (G_OBJECT (my_object), "my-property", NULL);

但是,如果我是默认值ob" my-property"是指向对象的非null指针?无论如何,这条线不起作用。我似乎不能只将NULL传递给g_object_set_property()

1 个答案:

答案 0 :(得分:4)

您需要使用GParamSpec获取属性的g_object_class_find_property()(本质上是类的属性定义),然后使用g_param_spec_get_default_value()获取其默认值。

以下内容应该有效:

GParamSpec *pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (my_object), "my-property");
const GValue *default_value = g_param_spec_get_default_value (pspec);
g_object_set_property (my_object, "my-property", default_value);