QTimer自行停止和启动

时间:2011-03-22 16:55:31

标签: c++ events qt qt4 timer

以下是我使用QTimer的方法:

QTimer *timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(update()));
timer->setInterval(1000);
timer->start();

程序监视update()函数并在其中打印当前时间。通常它按预期工作,它每秒打印一次,但是当程序开始处理其他工作时,会有一些中断,比如5到8秒。

Qt Documentation提到1毫秒等准确性问题,显然我还有另外一个问题。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

QTimer(以及所有基于事件的消息传递)不是中断驱动的。这意味着您无法保证在发送活动时您将收到该活动。准确性描述了事件是如何被触发的,而不是如何被触发。

如果您没有在长时间工作中进行线程处理,请在漫长的过程中定期致电QCoreApplication::processEvents()以确保您的广告位被调用。

答案 1 :(得分:0)

您的其他工作运行了几秒钟,并且在这些工作期间没有事件处理。您需要对作业进行线程化以获得所需的响应能力。