[英]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(); }
[] { emit work_is_down(); }
仍然在 10000 毫秒后運行。 如何完全阻止它?
QTimer::singleShot
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
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.