2011-11-06 76 views
96

Qtプログラムを終了するにはどうすればよいですか?たとえば、データファイルを読み込んでファイルの破損を発見し、ユーザーがこのアプリケーションを終了するか、データファイルを再起動する必要がありますか?Qtプログラムを終了する正しい方法は?

万一I:

  1. コールexit(EXIT_FAILURE)
  2. コールQApplication::quit()
  3. コールQCoreApplication::quit()

の差(2)及び(3)?

答えて

107

はQApplicationはQCoreApplication由来し、それによってQCoreApplicationのパブリックスロットので、QApplication::quit()QCoreApplication::quit()差がないquit()を継承しています。

quit()のドキュメントで読むことができるので、は、 "戻りコード0(成功)で終了するようにアプリケーションに指示します。"。ファイルの破損が検出されたために終了したい場合は、成功を意味する戻りコード0で終了したくない場合があるので、通常はエラーを示す0以外のreturnCodeを指定できるので、QCoreApplication::exit()を呼び出す必要があります。

あなたがexit(EXIT_FAILURE)を呼び出す必要があり、その場合のよう「イベントループが実行されていない場合は、この機能(QCoreApplication ::出口は())何もしない」ことに注意することが重要です。

27

qApp.exit();に電話することができます。私はいつもそれを使用し、それに問題はなかった。

アプリケーションがコマンドラインアプリケーションの場合、実際には終了コードを返すことができます。コードの内容はあなた次第です。

+0

Qt5で動作しない – YumYumYum

+1

Qt5これが成功QApplication :: quit() – YumYumYum

+0

以下を実行する必要がありました: 'qApp-> exit();' –

1

あなたは(メインのアプリケーションを閉じる必要があれば)あなたはQtのジャンビを使用している場合にOpenSSLが

+0

これはコンパイルできないと思います。 app.exit(0)はintを返しません。 'if(!QSslSocket :: supportsSsl()){return 0;};'を使用してください。この行でapp.exec()が呼び出されていないため、app.exit(0)は何もしません。QCoreApplication :: exit()のドキュメントを参照してください:_イベントループが実行されていない場合、この関数は何もしません._ –

-2

がインストールされていない場合、プログラムは、これはすべきで、終了します

int main(int argc, char *argv[]){ 
QApplication app(argc, argv); 
... 
if(!QSslSocket::supportsSsl()) return app.exit(0); 
... 
return app.exec(); 
} 

このコードを使用することができます作品:

QApplication.closeAllWindows(); 
0
//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"; 

example

+0

コードの書式を修正すると読みやすくなります。 – Shashanth

関連する問題