2017-11-01 5 views
0

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); 

하지만 기본값 산부인과 "내-속성이"비 - 널 포인터 인 경우 반대 할거야? 그리고 어쨌든이 라인은 작동하지 않습니다. 내가 당신이 재산 (기본적으로, 클래스의 프로퍼티의 정의) g_object_class_find_property()를 사용하여이 다음 g_param_spec_get_default_value()를 사용하여 기본 값을 얻기 위해 GParamSpec을 얻을 필요가 g_object_set_property()

답변

3

에 NULL을 전달할 수 없습니다 보인다.

다음과 같은 뭔가 작업을해야합니다 :

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); 
+0

G 객체는 매우 사용하기 쉬운 :-) 것 같다 – krokoziabla