6

問題は次のとおりです。アクティブに何もしていないときにアプリケーションを閉じると、正しく終了します。ただし、アクティブに何かに取り組んでいる場合 (たとえば、while ループで待機している場合)、メイン ウィンドウは閉じますが、タスク マネージャーを開いて確認すると、プログラムはバックグラウンドで実行され続けます。

今日の大部分を問題のグーグル検索と可能な修正の実装に費やしましたが、役に立ちませんでした。quit() 関数は単に何もしないようです。ここに私が試したいくつかのことがあります:

  • を使用してapp.connect( &app, SIGNAL(lastWindowClosed()), &app, SLOT(quit()));います。&app, SLOT(quit())に変更しようqApp, SLOT(aboutQt())としたところ、aboutQtウィンドウが一時的にポップアップしたため、シグナルがトリガーされていることがわかりました。
  • qApp->quit();メイン ウィンドウ ボタンから実行される関数の先頭に含めます。アプリケーションはその行まで実行されますが、効果はありません。
  • processEvents()GUI が更新されていることを確認するために使用します。
  • mainWindow.setAttribute(Qt::WA_QuitOnClose);main.cppのようなステートメントを含めます。

メインウィンドウを閉じたときにアプリケーションを完全に終了させたいだけです。

違いがある場合は、qextserialport ライブラリを使用しています。

4

1 に答える 1

1

何が問題なのかわかりませんが、スロットが実際に信号を受信するexit()ので、回避策としてそのスロット関数から呼び出すことができます。

于 2012-01-11T21:25:44.620 に答える