我现在正在研究Qt 5.5 / 4.8。我担心在通过调用该实例上的timeout()
显式停止计时器后是否(偶尔)发送stop()
信号?
我希望在timeout()
和start()
之间发送stop()
信号,但这是真的吗?
我的情况是:start()
和stop()
都在主线程中被调用,timeout()
信号作为直接连接被连接。 (我知道排队连接不能保证上面的说法。)
答案 0 :(得分:3)
快速回答:没有,在大多数情况下都不会被调用,但至少有一个例外。
可能被调用的情况是您使用了queued connections。例如,如果在停止之前发生{em>发出QTimer::timeout
信号,那么您可以在 之后将相关的广告位称为计时器。
在上面的情况下,插槽排队(但不一定被调用),因此可能会在实际调用插槽之前调用QTimer::stop
。
如果你使用排队连接,你可以在插槽的开头检查QTimer::isActive()
(你当然需要一些方法来访问计时器,也许是作为班级成员)。