我怎么能完全阻止QTimer呢?当我调用QTimer::stop()时,它没有正确地停止。
例如,我创建了一个QTimer:
QTimer timer;
timer.singleShot(10000, this, [] { emit work_is_down(); });当我停下来:
timer.stop();lambda [] { emit work_is_down(); }仍然运行在10000 is之后。怎样才能完全阻止它?
发布于 2020-06-15 13:05:55
QTimer::singleShot是QTimer类的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。
https://stackoverflow.com/questions/62388181
复制相似问题