我现在正在处理QT 5.5/4.8。我担心timeout()
信号是否可能((偶尔)在该实例上调用stop()
明确停止后发送后发送?
我希望timeout()
信号将在start()
和stop()
之间发送,但这是事实吗?
我的情况是:start()
和stop()
都在主线程中调用,并且timeout()
信号是直接连接的。(我知道排队连接无法保证上述语句。)
快速答案: no ,在大多数情况下都不会调用它,但至少有一个例外。
可以调用的情况是您使用了排队的连接。在这里,您可能会在之后获得相关的插槽,例如,如果QTimer::timeout
信号恰好是在停止计时器之前发射,则停止了。
在上面的插槽中排队(但不一定称为),因此可能会在实际调用插槽之前调用QTimer::stop
。
如果使用了排队连接,则可以在插槽开始时检查QTimer::isActive()
(当然,您需要某种方法来访问计时器,也许是作为课程的成员)。