如何让序号自动增加(序号自动增减怎么做)
571
2022-05-29
使用GtkApplication对象的实例:
#include
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
GtkApplication的出现是为了让我们的核心程序代码与main()函数分开。main()函数是由操作系统来调用的,属于操作系统实现细节。
main()并不关心我们的程序能做什么的,有什么样的行为。操作系统只知道要启动应用程序,就调用它main()函数,仅此而已。而我们的程序对要做什么,要响应什么是很感兴趣的,不关心操作系统调用main()函数的确切机制。
这样的分离做法也显得很合理了。
GTK+库并没有默认实现main函数,需要我们自己来实现。除了在main()函数里创建GtkApplication对象并运行它之外,尽量不要在main()函数里做过多的操作。真正的工作,通常在GtkApplication发出的信号中完成。GtkApplication运行时可能发出的信号:
startup: 当程序第一次启动时,startup信号就会被触发,可以对应用程序进行一些设置。
shutdown: 执行关闭任务,如保存文件到磁盘等
activate: 程序启动时,显示应用程序默认的第一个窗口,特别是在桌面环境下首次打开应用程序的情况。
open: 打开文件,并在新窗口显示。使用应用程序从文件浏览器尝试打开文档的情况。
应用可以注册除了默认的“activate”和“open“行为之外的行为。
GtkApplication对象默认是一个单例。程序启动后的第一个实例,称为主实例。远程实例就是除主实例外的其他运行实例。本地实例就是当前实例。
当用户偿试打开第二个GtkApplication对象单例时,GtkApplication将发信号到主实例。主实例将再次收到activate或open信号。这种情况下,第二个实例将马上退出,也不调用startup或shutdown。
现在,你应该明白为什么不要在main函数做太多操作的原因了吧。这样可以避免第二个实例做无用功。所有启动初始化都应用在startup中完成。可以调用g_application_hold()强制应用保持存活。
如果本地实例是主实例,那么函数调用GtkApplication实例产生的信号,会在本地中触发。如果本地实例是一个远程实例,那么函数调用产生的信号将被发送到主实例中,并在那里被触发。例如,在主实例中,调用g_application_activate(),将在主实例中触发“activate”信号;如果在远程实例中调用它,则产生一个消息并发送到主实例,然后,在主实例将触发“activate”。
《GtkApplication函数使用》
谢谢阅读
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。