10

Qt プログラムを閉じようとすると、ウィンドウがなくなってもバックグラウンドで実行され続けます。

基本的に、メイン ウィンドウ (親を持たない) の赤い十字をクリックすると適切に閉じるように、何をすべきかを知りたいと思います。

このリンクに従って、次のようないくつかのことを試しました:

QApplication app(argc, argv);
//...
app.connect(&app, SIGNAL(lastWindowClosed()), &app, SLOT(quit()));
return app.exec();

また

QApplication app(argc, argv);
//...
app.setQuitOnLastWindowClosed(true);
return app.exec();

しかし、どちらも機能せず、クロスがクリックされた後もプロセスはメモリに残ります。

では、どうすればプログラムを正しく閉じることができますか?

4

1 に答える 1

12

を使用してアプリケーションを手動で閉じることができますQApplication::quit()

デフォルトでは、Qt::WA_QuitOnClose属性を持つ最後のトップ レベル ウィンドウが閉じられると、実行が終了します。デフォルトの動作を繰り返すため、接続lastWindowClosedする必要はありません。デフォルトで true になっているため、どちらも行う必要はありません。投稿したコードは何もしません (どこかで何も変更されていない場合)。quitsetQuitOnLastWindowClosedsetQuitOnLastWindowClosed(true)

可能な解決策:

  • メイン ウィンドウの属性を確認します。属性を削除した可能性がありQt::WA_QuitOnCloseます。
  • closeEvent最上位ウィンドウで再実装した場合は、close イベントが受け入れられていることを確認してください。
  • 非表示になっているが閉じられていないトップレベルのウィジェットが他にあるかどうかを確認します。それらをリストするために使用QApplication::topLevelWidgets()します。
于 2013-06-12T09:09:33.450 に答える