我写了一个库(DLL)。 Java代码使用我的DLL与JNA。 在库中,我在QThread派生类中用“new”创建了Qtimer。
但是,我有以下错误:
ERROR: QTimer can only be used with threads started with QThread
如果没有QApplication / QCoreApplication,我应该如何正确地使用QTimer从非Qt线程调用?
答案 0 :(得分:1)
不幸的是,据我所知,QTimer需要QCoreApplication。并且还必须在创建我看到的第一个QObject的线程中实例化QCoreApplication。我所做的是将QCoreApplication实例化为使用QtConcurrent::run生成的新线程,并在那里实例化我的QObjects。我报告了一个简单的例子here。 QTimer现在似乎正常工作。
答案 1 :(得分:0)
看看QBasicTimer
。我不是100%确定这是否有效,但至少文档中没有提到QThread
和事件循环(与QTimer
类的文档相反)。
缺点是它有点复杂(它在你的timerEvent()
中调用QObject
重新实现,没有信号槽连接),但是如果它是真的,你可以在没有事件循环的情况下使用它