如何完全停止QTimer

How to completely stop QTimer

本文关键字:QTimer 何完全      更新时间:2023-10-16

我怎么能完全停止QTimer? 当我调用QTimer::stop()时,它没有正确停止。

例如,我创建了一个QTimer

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

当我停下来时:

timer.stop();

lambda[] { emit work_is_down(); }在 10000 毫秒后仍然运行。 如何完全停止它?

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

你需要做完整的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