正确的方式来退出Qt程序?
我应该如何退出一个Qt程序,例如,当加载数据文件,并发现文件损坏,用户需要退出这个应用程序或重新启动数据文件?
我是不是该:
- 通话
exit(EXIT_FAILURE)
- 调用
QApplication::quit()
- 调用
QCoreApplication::quit()
(2)和(3)之间的区别?
QApplication从QCoreApplication派生,从而inheritance了QCoreApplication
的公共插槽quit()
,因此QApplication::quit()
和QCoreApplication::quit()
之间没有区别。
正如我们可以在quit()
的文档中看到的,它“告诉应用程序退出,返回代码为0(成功)”。 。 如果你想退出,因为你发现文件损坏,那么你可能不想退出,代表成功的返回码0,所以你应该调用QCoreApplication::exit()
因为你可以提供一个非零的returnCode,按照惯例,一个错误。
注意“如果事件循环没有运行,这个函数(QCoreApplication :: exit())什么也不做” ,所以在这种情况下你应该调用exit(EXIT_FAILURE)
。
你可以调用qApp.exit();
。 我总是使用它,从来没有一个问题。
如果您的应用程序是一个命令行应用程序,您可能确实想要返回一个退出代码。 这完全取决于你的代码是什么。
如果你需要从main()closures你的应用程序,你可以使用这个代码
int main(int argc, char *argv[]){ QApplication app(argc, argv); ... if(!QSslSocket::supportsSsl()) return app.exit(0); ... return app.exec(); }
如果未安装OpenSSL,程序将终止
如果你正在使用Qt Jambi,这应该工作:
QApplication.closeAllWindows();