我應該如何退出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->退出();' –