Qtプログラムを終了するにはどうすればよいですか?たとえば、データファイルを読み込んでファイルの破損を発見した場合、ユーザーはこのアプリを終了するか、データファイルを再起動する必要がありますか?
したほうがいい:
exit(EXIT_FAILURE)
を呼び出しますQApplication::quit()
を呼び出しますQCoreApplication::quit()
を呼び出します(2)と(3)の違いは?
QApplicationはQCoreApplicationから派生しているため、QCoreApplication
のパブリックスロットであるquit()
を継承するため、QApplication::quit()
とQCoreApplication::quit()
の間に違いはありません。
QCoreApplication::quit()
itのドキュメントを読むとわかるように、「アプリケーションにリターンコード0(成功)で終了するように伝えます。」 。ファイルの破損を発見したために終了したい場合、成功を意味するリターンコードゼロで終了したくない場合がありますので、 QCoreApplication::exit()
を呼び出す必要があります。 、エラーを示します。
"イベントループが実行されていない場合、この関数(QCoreApplication :: exit())は何もしない"であることに注意することが重要です。 exit(EXIT_FAILURE)
を呼び出す必要があります。
qApp.exit();
を呼び出すことができます。私は常にそれを使用し、問題は一度もありませんでした。
アプリケーションがコマンドラインアプリケーションの場合、実際に終了コードを返すことができます。コードが何であるかは完全にあなた次第です。
main()からアプリケーションを閉じる必要がある場合、このコードを使用できます
int main(int argc, char *argv[]){
QApplication app(argc, argv);
...
if(!QSslSocket::supportsSsl()) return app.exit(0);
...
return app.exec();
}
OpenSSLがインストールされていない場合、プログラムは終了します
//How to Run App
bool ok = QProcess::startDetached("C:\\TTEC\\CozxyLogger\\CozxyLogger.exe");
qDebug() << "Run = " << ok;
//How to Kill App
system("taskkill /im CozxyLogger.exe /f");
qDebug() << "Close";
Qt Jambiを使用している場合、これは機能するはずです。
QApplication.closeAllWindows();