获取GObject类型的类结构实例

jdm*_*jdm 3 gtk gobject

如何在GObject/Gtk中获取某个类的类对象?例如,如果我的类是GtkSpinButton,我想获得代表该类的GtkSpinButtonClass实例.它是参数"class"

gtk_spin_button_class_init (GtkSpinButtonClass *class)
Run Code Online (Sandbox Code Playgroud)

它是存储虚函数的对象.当我有一个GtkSpinButton的实例时,我可以打电话

GtkSpinButtonClass *class = GTK_SPIN_BUTTON_GET_CLASS (instance)
Run Code Online (Sandbox Code Playgroud)

但是我没有实例.GTK_TYPE_SPIN_BUTTON给我类型id,数字,而不是类对象.知道如何获得实际的实例吗?

gri*_*rim 6

你想用 g_type_class_ref

GtkSpinButtonClass *klass = g_type_class_ref(GTK_TYPE_SPIN_BUTTON);
Run Code Online (Sandbox Code Playgroud)

当你完成它

g_type_class_unref(klass);
Run Code Online (Sandbox Code Playgroud)

  • 注意,(A)`g_type_class_ref()`如果需要的话创建类,即如果没有其他人已经做过,并且(B)有`g_type_class_peek()`,如果你确定,它可以避免创建/ ref/unref的需要class已经存在(或者很乐意检查`NULL`)并且不需要持有引用.请参阅[文档的相关区域](https://developer.gnome.org/gobject/stable/gobject-Type-Information.html#g-type-class-ref)中的完整详细信息. (2认同)