我应该如何退出Qt程序,例如加载数据文件并发现文件损坏,并且用户需要退出该应用程序或重新启动数据文件?退出Qt程序的正确方法?
我应该:
- 呼叫
exit(EXIT_FAILURE)
- 呼叫
QApplication::quit()
- 呼叫
QCoreApplication::quit()
之间的差异(2)和(3)?
我应该如何退出Qt程序,例如加载数据文件并发现文件损坏,并且用户需要退出该应用程序或重新启动数据文件?退出Qt程序的正确方法?
我应该:
exit(EXIT_FAILURE)
QApplication::quit()
QCoreApplication::quit()
之间的差异(2)和(3)?
的QApplication从QCoreApplication衍生,从而继承quit()
这是QCoreApplication
一个公共时隙,所以有QApplication::quit()
和QCoreApplication::quit()
之间没有差别。
正如我们可以在quit()
的文档中看到的,它“告诉应用程序退出时返回代码为0(成功)。”。如果你想退出是因为你发现了文件损坏,那么你可能不希望退出时返回代码为零,这意味着成功,所以你应该调用QCoreApplication::exit()
,因为你可以提供一个非零的returnCode,按照惯例,它表示一个错误。
需要注意的是“如果事件循环没有运行,这个功能(QCoreApplication ::退出()),什么都不做”,所以在这种情况下,你应该叫exit(EXIT_FAILURE)
是很重要的。
您可以拨打qApp.exit();
。我总是使用它,从来没有问题。
如果你的应用程序是一个命令行应用程序,你可能确实想要返回一个退出代码。这完全取决于你的代码是什么。
,如果你需要关闭主从()你的应用程序,你可以使用此代码
int main(int argc, char *argv[]){
QApplication app(argc, argv);
...
if(!QSslSocket::supportsSsl()) return app.exit(0);
...
return app.exec();
}
如果如果你使用Qt Jambi的,这应该是没有安装OpenSSL的
我认为这不会编译。 app.exit(0)不返回一个int。使用'if(!QSslSocket :: supportsSsl()){return 0;};'。因为app.exec()没有在这一行被调用,所以app.exit(0)什么都不做,请参阅QCoreApplication :: exit()的文档:_If事件循环没有运行,这个函数什么都不做._ –
程序将终止工作:
QApplication.closeAllWindows();
不工作在QT5 – YumYumYum
QT5这个工作的QApplication ::退出() – YumYumYum
我需要做到以下几点:'qApp->退出();' –