调用stop()后是否会发送QTimer超时信号?

时间:2017-09-10 10:33:45

标签: c++ qt qtimer

我现在正在研究Qt 5.5 / 4.8。我担心在通过调用该实例上的timeout()显式停止计时器后是否(偶尔)发送stop()信号?

我希望在timeout()start()之间发送stop()信号,但这是真的吗?

我的情况是:start()stop()都在主线程中被调用,timeout()信号作为直接连接被连接。 (我知道排队连接不能保证上面的说法。)

1 个答案:

答案 0 :(得分:3)

快速回答:没有,在大多数情况下都不会被调用,但至少有一个例外。

可能被调用的情况是您使用了queued connections。例如,如果在停止之前发生{em>发出QTimer::timeout信号,那么您可以在 之后将相关的广告位称为计时器。

在上面的情况下,插槽排队(但不一定被调用),因此可能会在实际调用插槽之前调用QTimer::stop

如果你使用排队连接,你可以在插槽的开头检查QTimer::isActive()(你当然需要一些方法来访问计时器,也许是作为班级成员)。