1 GtkApplication
1.1 GtkApplication and g_application_run
人们编写编程代码来开发应用程序。什么是应用程序?应用程序是使用库运行的软件,其中包括操作系统、框架等。在GTK 4编程中,GTK应用程序是使用GTK库运行的程序(或可执行程序)。
编写GtkApplication的基本方法如下。
- 创建一个GtkApplication实例。
- 运行这个实例。
这是所有。非常简单。下面是代表上述方法的C代码。
1 #include <gtk/gtk.h>
2
3 int
4 main (int argc, char **argv) {
5 GtkApplication *app;
6 int stat;
7
8 app = gtk_application_new ("com.github.ToshioCP.pr1", G_APPLICATION_DEFAULT_FLAGS);
9 stat =g_application_run (G_APPLICATION (app), argc, argv);
10 g_object_unref (app);
11 return stat;
12 }
13
第一行说明这个程序包含Gtk库的头文件。函数main是C语言中的一个启动函数。变量app被定义为一个指向GtkApplication实例的指针。函数gtk_application_new创建一个GtkApplication实例,并返回一个指向该实例的指针。GtkApplication实例是一个C结构体数据,其中存储了有关应用程序的信息。后面会解释这些参数的含义。函数g_application_run运行实例定义的应用程序。(我们经常说这个函数运行app。实际上,app不是一个应用程序,而是一个指向该应用程序实例的指针。但是,它简单而简短,可能不会造成混淆。)
这里我使用了单词instance。实例、类和对象是面向对象编程中的术语。我用同样的方式使用这些词。但是,在本教程中,我将经常使用“对象”而不是“实例”。这意味着“对象”和“实例”是相同的。对象是一个有点模棱两可的词。从广义上讲,对象比实例具有更广泛的含义。因此,读者应注意语境,以找到“对象”的含义。在很多情况下,object和instance是相同的。
要编译它,需要运行以下命令。字符串pr1.c是上述C源代码的文件名。
gcc `pkg-config --cflags gtk4` pr1.c `pkg-config --libs gtk4`
./a.out
(a.out:13533): GLib-GIO-WARNING **: 15:30:17.449: Your application does not implement
g_application_activate() and has no handlers connected to the “activate” signal.
It should do one of these.
哦,它只是产生一个错误信息。这个错误消息意味着GtkApplication对象运行了,毫无疑问。现在,让我们想想这条消息意味着什么。
1.2 信号
这个消息告诉我们:
- 应用程序GtkApplication没有实现g_application_activate(),
- 它没有连接到“activate”信号的处理程序,而且
- 你需要解决其中至少一个问题。
这两个error的原因与信号有关。我先给你们解释一下。
当有事情发生时,就会发出信号。例如,创建窗口,销毁窗口,等等。当应用被激活时,会发出"activate"信号。(Activated和started有点不同,但你可以认为到目前为止两

最低0.47元/天 解锁文章
1188

被折叠的 条评论
为什么被折叠?



