Qt 定時器事件startTimer


定時器事件

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;並一直循環


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM