从非Qt DLL(JNA)使用QTimer

时间:2012-05-25 12:18:53

标签: java c++ qt jna qt-mfc-migration

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

但是,我有以下错误:

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

如果没有QApplication / QCoreApplication,我应该如何正确地使用QTimer从非Qt线程调用?

2 个答案:

答案 0 :(得分:1)

不幸的是,据我所知,QTimer需要QCoreApplication。并且还必须在创建我看到的第一个QObject的线程中实例化QCoreApplication。我所做的是将QCoreApplication实例化为使用QtConcurrent::run生成的新线程,并在那里实例化我的QObjects。我报告了一个简单的例子here。 QTimer现在似乎正常工作。

答案 1 :(得分:0)

看看QBasicTimer。我不是100%确定这是否有效,但至少文档中没有提到QThread和事件循环(与QTimer类的文档相反)。

缺点是它有点复杂(它在你的timerEvent()中调用QObject重新实现,没有信号槽连接),但是如果它是真的,你可以在没有事件循环的情况下使用它