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