0

我写了一个库(DLL)。Java 代码将我的 DLL 与 JNA 一起使用。在库中,我通过 QThread 派生类中的“new”创建 Qtimer。

但是,我有以下错误:

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

在没有 QApplication/QCoreApplication 的情况下,我应该如何正确使用 QTimer 从非 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 回答