2008-09-09 11 views
1

イベントハンドラが投稿イベントをどのように管理しているか知っていますか?私のアプリでマルチスレッドのQtのイベントハンドラ

私は2つのスレッド(guiThreadcomputationThread)を持っています。例外がスローされた後、私はpostEvent(..)を既存のダイアログに呼び出します。 Qt-Event-Handlerは、ダイアログが閉じられるまでこれを保持します。


申し訳ありませんが、私の質問は少し曇っています。時間があればもっと正確に書きます。私は仕事を見つけました。しかし、私の問題はまだ興味深いです。 QCoreApplication::postEventについてQtのドキュメントにmentionnedよう

答えて

2

:メインイベントループに戻るが、キューに格納されているすべてのイベントが通知()関数を使用して送信される

...これは、ダイアログが閉じられるまでQtイベントハンドラがイベントを保持する理由を説明しています。

あなたがしたいことを正しく理解していれば、sendEventを試してみます。

1

あなたが作成したダイアログがモーダルであると推測しています。これは、独自のイベントループを実行していることを意味します。一般的なguiThreadに投稿されたイベントは、すべてのモーダルイベントループが終了するまで処理されません。

また、ダイアログがモーダルであり、イベントについて知っている必要がある場合は、ダイアログに直接イベントを投稿することができます。あなたは共有方法でポインタを扱う方法を理解する必要がありますが、何も複雑さがなければ、QApplication :: activeWindow()関数を使うことができます。

0

他の人が既に書いているように、私はこの動作がダイアログが独自のイベントループを開始するという事実が原因だと考えています。

Qt4を使用している場合は、イベントを投稿する代わりにqueued signal/slot connectionsを試してみることができます。

関連する問題