定时器事件
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;并一直循环