0

私が取り組んでいるアプリケーションは、メッセージ ( 0mq) を介して相互に通信する多くの C スレッドで構成されています。これらのスレッドの 1 つはディスプレイを処理しており、その「スクリーンショット」をアプリケーションの他のスレッドに伝達するために、画面外でウィジェットをレンダリングする必要があります。

問題は、ウィジェットをペイントするには、ウィジェットを に配置し、本質的にループであるのメソッドをQApplication呼び出す必要があるということです。そのため、私のスレッドは完全にスタックし、exec() メソッドにあるため、外の世界と通信できなくなります。exec()QApplication

別のスレッドで QApplication を起動し、それと通信して、表示スレッドがスタックしないようにする方法はありますか? または、少なくとも Qt でやりたいことを行う方法はありますか?

どうもありがとう !

編集: このアプリケーションは最終的に Qt 組み込みアプリケーションになります

更新基本的に、私の質問は次のとおりです。Cコードとは別のスレッドで QApplication を開始し、それと通信する方法は?

4

2 に答える 2

1

最終的に、QApplication メイン イベント ループ (exec()) 用に別のスレッドを作成し、0mq ソケットを使用してアプリケーションの残りの部分からスレッドと通信しました。

于 2013-11-18T13:24:17.720 に答える
0

「ウィジェットをペイントする」の意味がわかりません。ただし、注意してください: QWidget は GUI の一部であり、GUI パーツはメイン (UI) スレッドのみで操作する必要があります。変えられないルールです。さらに、QApplication は GUI 自体の主要部分であるため、QApplication はメイン スレッドでのみ動作します。グローバルqAppオブジェクト(QApplicationを含める必要があります) sendEvent()postEvent()メソッドを使用して、QAppplicationにメッセージを投稿できます。

また、持っているデータで QImage を生成し、前述のイベントメカニズムを介して必要なウィジェットに伝播することをお勧めします。しかし、明らかに、私はあなたが本当に必要なものを知りません。

于 2013-10-24T15:03:11.327 に答える