QTimersingleShot 简单用法

所述 QTimer::singleShot 用于调用一个时隙/λ 异步经过 n 毫秒。

基本语法是:

QTimer::singleShot(myTime, myObject, SLOT(myMethodInMyObject()));

myTime 表示 ms 的时间, myObject 是包含方法的对象, myMethodInMyObject 是要调用的槽

因此,例如,如果你想要一个编写调试行的计时器“hello!” 每 5 秒钟:

.cpp

void MyObject::startHelloWave()
{
    QTimer::singleShot(5 * 1000, this, SLOT(helloWave()));
}

void MyObject::helloWave()
{
    qDebug() << "hello !";
    QTimer::singleShot(5 * 1000, this, SLOT(helloWave()));
}

.hh

class MyObject : public QObject {
    Q_OBJECT
    ...
    void startHelloWave();

private slots:
    void helloWave();
    ...
};