一、QTimer簡介
Qt定時器是一種用來處理周期性和延時性任務的機制,其可以在一定時間間隔後執行指定的操作,或者說是在設定的時間過去之後發出timeout()信號。
QTimer繼承自QObject,可以被添加到QCoreApplication或者QWidget中,也可以在QThread中使用。
QTimer的單個定時響應可使用singleShot()函數觸發。
二、QTimer的使用方法
使用QTimer比較簡單,步驟如下:
1.在頭文件中引入QTimer
#include <QTimer>
2.在需要使用的地方創建QTimer對象
QTimer *timer = new QTimer(this);
3.設置定時時間,以毫秒為單位
timer->setInterval(1000);
4.設置定時器是否單次觸發,true為單次觸發,false為周期觸發
timer->setSingleShot(true/false);
5.連接定時器的timeout()信號到需要執行的槽函數中
connect(timer, &QTimer::timeout, this, &MainWindow::onTimeout);
6.啟動定時器
timer->start();
三、延時執行的方法
使用QTimer可以輕鬆實現延時執行的功能。
例如我們要延遲5秒執行一個操作:
QTimer::singleShot(5000, this, &MyClass::myFunc);
其中5000表示5秒,myFunc是自定義的槽函數。
四、QTimer的進階應用
QTimer還可以使用QEventLoop實現阻塞式延時執行。
例如我們要延遲5秒執行一些操作,並在此期間GUI保持響應,可以使用如下代碼:
QTimer timer; QEventLoop loop; timer.setSingleShot(true); QObject::connect(&timer, &QTimer::timeout, &loop, &QEventLoop::quit); timer.start(5000); loop.exec(); //執行一些操作
在上述代碼中,QEventLoop的exec()函數會阻塞當前線程,直到定時器超時後停止事件循環。
五、小結
QTimer是一個簡單又實用的定時器機制,可以應用於各種場景,如延時執行、周期性執行等。
使用QTimer的步驟非常簡單,只需創建QTimer對象、設置定時時間和單次觸發屬性,連接定時器的timeout()信號到需要執行的槽函數中,並啟動定時器即可。
在高級應用中,可以使用QEventLoop實現阻塞式延時執行,讓GUI保持響應。
原創文章,作者:SGMP,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/149415.html