gpt4 book ai didi

gtk _get_type()函数实现

转载 作者:行者123 更新时间:2023-12-01 22:28:23 27 4
gpt4 key购买 nike

我刚刚开始学习GTK。我正在浏览gtk+3.0.0的源代码,我发现_get_type()的实现一些 gtk 对象类型的方法,但有些没有此方法的实现,例如 GtkRange 。这有什么原因吗?据我从 GObject 引用手册中了解到,_get_type()方法在类型系统中注册对象类型。

最佳答案

注册为 GType 的所有类型都需要 get_type() 函数。 GObject(库)提供了方便的宏来生成正确的 get_type() 函数实现,同时考虑到线程安全初始化或动态类型注册等问题。

用于 GObject(类型)子类的宏是 G_DEFINE_TYPE(),但在 GTK+ 中,您还会发现 G_DEFINE_TYPE_WITH_CODE(),通常在类型时使用还实现接口(interface); G_DEFINE_ABSTRACT_TYPE()G_DEFINE_ABSTRACT_TYPE_WITH_CODE(),用于抽象类型;最近,G_DEFINE_TYPE_WITH_PRIVATE()G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE() 使用私有(private)数据定义 GObject 子类,避免了对内部 g_type_class_add_private() 的调用类初始化函数。

装箱类型(普通旧结构的 GType 包装器)也有 G_DEFINE_BOXED_TYPE(),接口(interface)类型有 G_DEFINE_INTERFACE()

GObject 的 API 引用中提供了更多信息:

https://docs.gtk.org/gobject/func.DEFINE_TYPE.html

关于gtk _get_type()函数实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20559103/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com