在QT5中,我們有一個專門的計時器類,QTimer,我們可以利用它完成一些關于定時的操作,實例如下:
#include <QTimer>
QTimer* timer = new QTimer();
timer->start(value); //以毫秒為單位
QObject::connect(timer,&QTimer::timeout,receiver,&slot); //時間結束,發送timeout信號
void slot()
{
timer->stop(); //停止計時器
//do something
}
在我們定時時間結束的時候,我們需要手動停止timer,不然他會不斷發送出timeout這個信號,同時,我們需要注意,在做連接函數之前,我們需要存在這個timer的實例,不然會導致程序崩潰,當然我們也可以不需要實例化timer,而是使用QTimer的靜態方法,直接起動定時,一下是QT文檔中的一個例子:
#include <QApplication>
#include <QTimer>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QTimer::singleShot(600000, &app, SLOT(quit())); //使用靜態方法,在600秒之后退出程序
...
return app.exec();
}
我們可以在一個程序之中使用多個timer,每一個timer都是有著自己獨自的timerId,和window進程的pid類似,我們可以利用timerEvent來處理多個timer:
void timerEvent(QTimerEvent* event)
{
if(event->timerId() == timerId) //使用if來判斷是那個timer發出的信號
{
// do something
}
}