看gtk的文档时(gtk3没看到getting started 所以看的4 应该差不多吧?)
前面的例子看过视频都很容易理解, 但是看到build app, 好像突然换到了面向对象的方法
视频里谈到面向对象时 我以为主要是理解源码时用到, 一般简单了解到各个组件之间的继承关系就可以,包括后面几节项目也没有用到定义自己的类实现面向对象
好了,有关面向对象设计理念的内容呢,我也不打算过多深入探讨了,一般的 C 语言教程
也不会涉及这些内容。我们安排这一节的目的就是希望让大家在阅读 GTK 和 glib 的源码
时更容易搞清楚这些类型定义的作用和目的,如果大家对于面向对象产生了兴趣,经过 C
语言的学习,相信大家现在也具备了学习 C++ 或者 Java 这样的面向对象的语言的基础。
但是文档里仅仅是start就在自己实现类 面向对象?
#include "exampleapp.h"
#include "exampleappwin.h"
struct _ExampleApp
{
GtkApplication parent;
};
G_DEFINE_TYPE(ExampleApp, example_app, GTK_TYPE_APPLICATION);
static void example_app_init (ExampleApp *app) { }
static void example_app_activate (GApplication *app) { }
static void example_app_open (GApplication *app, GFile **files, int n_files, const char *hint) { }
static void example_app_class_init (ExampleAppClass *class) { }
ExampleApp * example_app_new (void) { }
什么情况下要用视频里的方式,什么时候应该自己去自定义类和方法呢
老师可以再给些进一步学习gtk的建议吗
比如 gtk4 getting started - build app 的第一个例子 不解释的给个头文件 就感觉理解起来不容易。。
#ifndef __EXAMPLEAPP_H
#define __EXAMPLEAPP_H
#include <gtk/gtk.h>
#define EXAMPLE_APP_TYPE (example_app_get_type())
G_DECLARE_FINAL_TYPE(ExampleApp, example_app, EXAMPLE, APP, GtkApplication)
ExampleApp *example_app_new(void);
#endif /* __EXAMPLEAPP_H */