提问者:小点点

如何完全停止QTimer


如何完全停止qtimer? 当我调用QTimer::Stop()时,它没有正确停止。

例如,我创建了一个QTimer:

QTimer timer;
timer.singleShot(10000, this, [] { emit work_is_down(); });

当我停下来的时候:

timer.stop();

10000ms后,lambda[]{emit work_is_down();}仍在运行。 如何彻底制止?


共1个答案

匿名用户

QTimer::SingleShotQTimer类的静态方法。 您可以在实例上调用它,但它将从根本上断开与该实例的连接。

你需要做完整的QTimer舞蹈,就像上面评论中说的那样:

QTimer *timer = new QTimer();
QObject::connect(timer, &QTimer::timeout, this, [](){ emit work_is_down(); });
timer->setSingleShot(true);
timer->start(10000);

不要忘记在完成时调用delete timertimer->deletelater(),或者更好地使用std::unique_ptrQSharedPointer