簡體   English   中英

如何完全停止 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(); } [] { 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 timertimer->deleteLater() ,或者更好的是,使用std::unique_ptrQSharedPointer

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM