0

ライブラリ(DLL)を書きました。Java コードは、私の DLL を JNA で使用します。ライブラリでは、QThread 派生クラスの "new" で Qtimer を作成します。

しかし、次のエラーがあります。

ERROR: QTimer can only be used with threads started with QThread

QTimer を正しく使用して、QApplication/QCoreApplication を使用せずに非 Qt スレッドから呼び出すにはどうすればよいですか?

4

2 に答える 2

1

残念ながら、私の知る限り、QTimer には QCoreApplication が必要です。また、QCoreApplication は、最初に表示される QObject を作成するスレッドでインスタンス化する必要があります。私がしたことは、 QCoreApplication を使用してQtConcurrent::runを生成した新しいスレッドをインスタンス化し、そこで QObjects をインスタンス化することでした。ここで些細な例を報告しました。QTimer が正しく動作するようになりました。

于 2012-05-26T13:48:38.300 に答える
0

をご覧くださいQBasicTimer。これが機能するかどうかは100%確信が持てませんが、少なくともドキュメントではQThreads とイベントループについてはまったく言及されていません(QTimerクラスのドキュメントとは対照的に)。

欠点は、もう少し複雑なことです (シグナルスロット接続なしtimerEvent()で再実装を呼び出しますQObject) が、それが本当なら、イベントループなしで使用できます。

于 2012-05-25T16:38:37.743 に答える