在调用stop()之后,将发送qTimer超时信号

Will QTimer timeout signal be sent after stop() is called?

本文关键字:qTimer 超时 信号 stop 调用 之后      更新时间:2023-10-16

我现在正在处理QT 5.5/4.8。我担心timeout()信号是否可能((偶尔)在该实例上调用stop()明确停止后发送后发送?

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

我的情况是:start()stop()都在主线程中调用,并且timeout()信号是直接连接的。(我知道排队连接无法保证上述语句。)

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

可以调用的情况是您使用了排队的连接。在这里,您可能会在之后获得相关的插槽,例如,如果QTimer::timeout信号恰好是在停止计时器之前发射,则停止了。

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

如果使用了排队连接,则可以在插槽开始时检查QTimer::isActive()(当然,您需要某种方法来访问计时器,也许是作为课程的成员)。