尽管我认为问题并不那么复杂,但我很难说出这个问题。

我想做一些类似于QTimer::singleshot()的操作,但我希望它即使在触发前多次调用QTimer::singleshot()仍只调用一次SLOT。

最佳答案

这应该工作。

class MyObject
{

// ...
    QTimer* mTimer;
}

MyObject::MyObject()
{
    mTimer = new QTimer(this);
    mTimer->setSingleShot(true);
    connect(mTimer, SIGNAL(timeout()), SLOT(doStuff()));
}

MyObject::startOrResetTimer()
{
   mTimer->start(1000);
}

09-08 00:39