我试图了解这个基本GTK计划的基础知识。我无法弄清楚G_DEFINE_TYPE
的工作原理。它看起来类似于C`
struct _LearnWindow
{
GtkApplicationWindow parent_instance;
/* Template widgets */
GtkHeaderBar *header_bar;
GtkLabel *label;
};
G_DEFINE_TYPE (LearnWindow, learn_window, GTK_TYPE_APPLICATION_WINDOW)
static void
learn_window_class_init (LearnWindowClass *klass)
{
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/Learn/learn-window.ui");
gtk_widget_class_bind_template_child (widget_class, LearnWindow, header_bar);
gtk_widget_class_bind_template_child (widget_class, LearnWindow, label);
}
static void
learn_window_init (LearnWindow *self)
{
gtk_widget_init_template (GTK_WIDGET (self));
}
答案 0 :(得分:1)
#define G_DEFINE_TYPE(TN, t_n, T_P) G_DEFINE_TYPE_EXTENDED (TN, t_n, T_P, 0, {})
类型实现的便捷宏,它声明了一个类初始化函数,一个实例初始化函数(有关这些函数的信息,请参阅GTypeInfo)和一个指向父类的名为t_n_parent_class的静态变量。此外,它定义了一个* _get_type()函数。