6

QT以外のアプリケーションでロードする必要のあるDLLをコーディングしたいと思います。結果として、DLLがロードされたとき、私は何も持っていませんQApplication/QCoreApplication。その結果、私のシグナル/スロットメカニズムが機能していません。

私はQtフォーラムを深く検索しましたが、そのような問題をどのように処理するかについてはまだ良い答えを得ることができませんでした。私はそのスレッドにQThread移動して偽物を作成し、 QThreadの関数内でその関数を呼び出しました。このように私のシグナルスロットメカニズムは機能しましたが、その間接的な解決策には満足していません。Qt以外のメインスレッドの実行スペースからスレッドスロットをアクティブ化できるはずです。そのようなdllプラグインを操作する正しい方法は何ですか?直接の回答と読み物の推奨を歓迎します。ありがとうございましたQObjectsQApplicationCoreexec()run()

注:DLLをロードする外部アプリケーションはWindowsアプリです。これはサードパーティのアプリケーションであり、触れることはできません。

4

1 に答える 1

6

Qt シグナルとスロットでは、イベント ループが実行されている必要があります。QObjectsが存在するスレッドでイベントループを実行する必要があります。もちろん、アプリケーションのメイン スレッドで実行することはできません (Qt を使用しないため)。そのため、を開始しQThread、QObjects をこのスレッドに移動 (またはメソッドでこれらのオブジェクトを作成) し、スレッドのメソッドでrun()実行するのが正しい方法です。解決。exec()run()

于 2012-12-28T12:37:52.793 に答える