正确的方式来退出Qt程序?

我应该如何退出一个Qt程序,例如,当加载数据文件,并发现文件损坏,用户需要退出这个应用程序或重新启动数据文件?

我是不是该:

  1. 通话exit(EXIT_FAILURE)
  2. 调用QApplication::quit()
  3. 调用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();