具有 Lambda 功能的 Singleshot Timer 作为插槽

如果需要一个单一的计时器,那么在声明计时器的地方将插槽作为 lambda 函数安静是很方便的:

QTimer::singleShot(1000, []() { /*Code here*/ } );

由于这个 Bug(QTBUG-26406) ,这种方式仅在 Qt5.4 之后才有可能。

在早期的 Qt5 版本中,必须使用更多的锅炉板代码:

  QTimer *timer = new QTimer(this);
  timer->setSingleShot(true);

  connect(timer, &QTimer::timeout, [=]() {
    /*Code here*/
    timer->deleteLater();
  } );