イベントハンドラーが投稿されたイベントを管理する方法を知っている人はいますか?
私のアプリには2つのスレッド(guiThreadとcomputationThread)があります。例外がスローされた後postEvent(..)
、既存のダイアログを呼び出します。Qt-Event-Handlerは、ダイアログが閉じられるまでこれを保留します。
申し訳ありませんが、私の質問は少し曇っています。時間があればもっと正確に書きます。回避策を見つけました。しかし、私にとって問題はまだ興味深いものです。
QCoreApplication :: postEventに関するQtドキュメントで言及されているように:
制御がメインイベントループに戻ると、キューに格納されているすべてのイベントがnotify()関数を使用して送信されます。
...これは、Qtイベントハンドラーがダイアログが閉じられるまでイベントを保持する理由を説明しています。
あなたがやりたいことを正しく理解しているなら、sendEventを使ってみます。
作成したダイアログはモーダルであると推測しています。つまり、独自のイベント ループを実行していることになります。一般的な guiThread にポストされたイベントは、すべてのモーダル イベント ループが終了するまで処理されません。
あるいは、ダイアログをモーダルにし、イベントを認識させる必要がある場合は、イベントをダイアログに直接投稿できます。共有方法でポインタを処理する方法を理解する必要がありますが、複雑なことが何も起こっていない場合は、QApplication::activeWindow() 関数を使用できる可能性があります。
他の人がすでに書いたように、この動作は、ダイアログが独自のイベント ループを開始するという事実によって引き起こされると思います。
Qt4 を使用している場合は、イベントを投稿する代わりに、キューに入れられたシグナル/スロット接続を使用してみることができます。