【问题标题】:GObject: how to reset property to the default value?GObject:如何将属性重置为默认值?
【发布时间】:2017-11-01 20:58:07
【问题描述】:

我有一个 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 传递给g_object_set_property()

【问题讨论】:

    标签: gobject


    【解决方案1】:

    您需要使用g_object_class_find_property() 获取属性的GParamSpec(本质上是类上属性的定义),然后使用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);
    

    【讨论】:

    • gobject 似乎对用户非常友好 :-)
    猜你喜欢
    • 2012-11-12
    • 2012-01-03
    • 1970-01-01
    • 1970-01-01
    • 2010-10-16
    • 1970-01-01
    相关资源
    最近更新 更多