我嘗試繼承gobject,並且除其他外,希望更改G_PARAM_CONSTRUCT_ONLY屬性的值,以便下一個子類不必關心。通過繼承來更改G_PARAM_CONSTRUCT_ONLY屬性
下面是一個例子來描述這個:GtkComboBox有一個構造唯一屬性,名爲「has-entry」,默認值爲FALSE。在A類中,我想將此值更改爲TRUE,以便B類不需要關心。
GtkComboBoxClass <-- AClass <-- BClass
"has-entry" FALSE TRUE
第一個幼稚的做法是使用g_object_set()在A的INSTANCE_INIT功能,但無濟於事。
下一個想法是使用g_object_class_find_property()獲取GParamSpec,並在A的class_init函數中使用g_param_value_set_default()更改默認值。但我想這是爲了更改所有GtkComboBoxClass派生對象的默認值。
我可以想出最好的想法:如果g_object_class_override_property()創建一個新的GParamSpec,我可以找到它並在A的class_init函數中設置其默認值。但是文檔對此沒有任何評論。
所以我的問題:這是一個工作,並打算,完成此方式,或者有更好的解決方案?
試過至今:
- g_object_set()的實例的init():在GObjectClass-
- 在啓動任何警告
- 沒有影響
- g_object_set()>構造函數():
- 開始時沒有警告
- 沒有影響
- 警告退出:從GtkCellCiew無效轉換到在GtkEntry中GObjectClass-
- g_object_set()>構造():在啓動
- 警告:不能施工 後設置
感謝 斯特凡
嘗試使用glib-2.28.8。獲取:GLib-GObject-WARNING **:g_object_set_valist:對象TestComboBox的構造屬性「has-entry」在構造後不能設置 – user2011659