Qt::Application::exec does not return exit code from Qt::Application::exit
来源:互联网 发布:java 数据权限 编辑:程序博客网 时间:2024/06/06 07:36
概念理解不透侧导致,我们先看这两个API在Qt中的含义:
void QApplication::exit ( int retcode = 0 ) [静态]
告诉应用程序退出,伴随一个返回代码。在这个函数被调用之后,应用程序离开主事件循环并且从exec()调用之后返回。exec()函数返回retcode。根据习惯,为0的retcode意味着成功,并且任何非零的值意味着错误。注意与同名的C库函数不同,这个函数返回到调用者——它的事件处理结束。int QApplication::exec ()
进入主事件循环并且等待,直到exit()被调用或者主窗口部件被销毁,并且返回值被设置为exit()(如果通过quit()调用exit(),retcode为0)。需要调用这个函数来开始事件处理。主事件循环从窗口系统中接收事件并且把它们分派给应用程序窗口部件。通常来说,在调用exec()之前,没有用户交互可以发生。作为一个特例,像QMessageBox这样的模式对话框可以在调用exec()之前使用,因为模式对话框调用exec()来开始本地事件循环。为了使你的应用程序执行空闲处理,例如,只要没有未处理地事件,执行一个特殊的函数,使用QTimer,0超时。更高级的空闲处理方案可以使用processEvents()来完成。
问题关键点的一句话:If the event loop is not running, this function does nothing.
意思就是,如果exit()没有在循环事件中,则exit()函数什么都不会做。也就是你需要用一个线程或者信号来触发这个exit(),而函数构造的时候不应该执行exit(),即使执行了,也是在主事件循环等待之前,是不会将结果返回给exec()的。
参考资料:http://www.qtcentre.org/threads/19706-Exiting-a-Qt-Console-Application
https://forum.qt.io/topic/36208/solved-console-application-does-not-exit
- Qt::Application::exec does not return exit code from Qt::Application::exit
- Application.Exit()
- Application.Exit()
- BibTeX return exit code
- 23.9 Application exit application 退出
- Java exit code 13 on Eclipse RCP application (Indigo)
- Application.Exit和Environment.Exit区别
- Application.Exit和Environment.Exit的区别
- Application.Exit() 与 Form.Close()
- return、exit
- return() exit()
- #611 – 在退出事件中设置退出码(Set Application Exit Code in Exit Event Handler)
- WinForm中Application.Exit与Environment.Exit的区别
- winform退出代码:Application.Exit和Environment.Exit(0)
- WinForm中Application.Exit与Environment.Exit的区别
- Application.Exit()与Environment.Exit(0)有何区别
- 为何Application.Exit()无法真正退出程序
- Application.Exit()为什么没有退出程序?
- Lisp列表
- 两个数的最大公倍数
- 未解决的问题和散乱的知识点
- 插入排序
- 工作感悟_of_RS
- Qt::Application::exec does not return exit code from Qt::Application::exit
- Torch7深度学习教程
- Go的空白标识符
- VCSA6.5加域选项位置
- restful的无状态理解
- 从核心技术到实践应用——你的数据库深度挖掘指南
- linux根目录
- 电脑中有多个Eclipse设置jdk
- Windows屏蔽TouchPad Driver Diagnostics