定時器事件
1、開啟一個定時器:
1 int startTimer(int interval, Qt::TimerType timerType = Qt::CoarseTimer); 2 功能:啟動一個定時器事件並返回一個定時器id 3
4 參數說明: 5 interval:定時器的觸發時間(觸發的間隔時間)
2、關閉定時器
1 void QObject::killTimer(int id) 2
3 功能:關閉指定id的定時器 4
5 參數說明: 6 id:啟動定時器時返回的id
3、定時器事件
1 virtual void timerEvent(QTimerEvent *event); 2
3 功能:當啟動定時器后自動調用的函數(虛函數需要重寫) 4 參數說明: 5 event:事件(可用於判斷當前發生的事件等)
4、示例代碼
mainwindow.h文件
1 #ifndef MAINWINDOW_H 2 #define MAINWINDOW_H
3
4 #include <QMainWindow>
5 #include <QTimer>
6 #include <QDebug>
7
8 QT_BEGIN_NAMESPACE 9 namespace Ui { class MainWindow; } 10 QT_END_NAMESPACE 11
12 class MainWindow : public QMainWindow 13 { 14 Q_OBJECT 15
16 public: 17 MainWindow(QWidget *parent = nullptr); 18 void timerEvent(QTimerEvent *e); 19 ~MainWindow(); 20
21 private: 22 Ui::MainWindow *ui; 23 int timerid1; 24 int timerid2; 25 }; 26 #endif // MAINWINDOW_H
mainwindow.cpp文件:
1 #include "mainwindow.h"
2 #include "ui_mainwindow.h"
3
4 MainWindow::MainWindow(QWidget *parent) 5 : QMainWindow(parent) 6 , ui(new Ui::MainWindow) 7 { 8 ui->setupUi(this); 9 timerid1 = startTimer(1000); 10 timerid2 = startTimer(3000); 11
12 } 13
14 void MainWindow::timerEvent(QTimerEvent *e) 15 { 16 if(e->timerId()==timerid1) 17 { 18 qDebug("timer1"); 19 } 20 else if(e->timerId()==timerid2) 21 { 22 qDebug("timer2"); 23 } 24 } 25
26 MainWindow::~MainWindow() 27 { 28 delete ui; 29 }
main.cpp文件
1 #include "mainwindow.h"
2
3 #include <QApplication>
4
5 int main(int argc, char *argv[]) 6 { 7 QApplication a(argc, argv); 8 MainWindow w; 9 w.show(); 10 return a.exec(); 11 }
5、運行結果
timer1是每秒調用一次定時器事件,timer是每三秒調用一次定時器事件,因此輸出順序為先輸出兩個timer1再輸出一個timer2並且馬上輸出一個timer1;並一直循環