我有一个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()
答案 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);