如何完全停止QTimer
How to completely stop QTimer
我怎样才能完全阻止QTimer
?当我调用 QTimer::stop()
时,它没有正确停止。
例如我创建了一个 QTimer
:
QTimer timer;
timer.singleShot(10000, this, [] { emit work_is_down(); });
当我停下来时:
timer.stop();
lambda [] { emit work_is_down(); }
在 10000 毫秒后仍然是 运行。如何彻底阻止它?
QTimer::singleShot
是 QTimer
class 的一个 static
方法。您可以在一个实例上调用它,但它会从根本上与该实例断开连接。
你需要做完整的 QTimer 舞蹈,如上面的评论所述:
QTimer *timer = new QTimer();
QObject::connect(timer, &QTimer::timeout, this, [](){ emit work_is_down(); });
timer->setSingleShot(true);
timer->start(10000);
不要忘记在完成后调用 delete timer
或 timer->deleteLater()
,或者更好的是,使用 std::unique_ptr
或 QSharedPointer
。
我怎样才能完全阻止QTimer
?当我调用 QTimer::stop()
时,它没有正确停止。
例如我创建了一个 QTimer
:
QTimer timer;
timer.singleShot(10000, this, [] { emit work_is_down(); });
当我停下来时:
timer.stop();
lambda [] { emit work_is_down(); }
在 10000 毫秒后仍然是 运行。如何彻底阻止它?
QTimer::singleShot
是 QTimer
class 的一个 static
方法。您可以在一个实例上调用它,但它会从根本上与该实例断开连接。
你需要做完整的 QTimer 舞蹈,如上面的评论所述:
QTimer *timer = new QTimer();
QObject::connect(timer, &QTimer::timeout, this, [](){ emit work_is_down(); });
timer->setSingleShot(true);
timer->start(10000);
不要忘记在完成后调用 delete timer
或 timer->deleteLater()
,或者更好的是,使用 std::unique_ptr
或 QSharedPointer
。