一杯清酒邀明月
天下本无事,庸人扰之而烦耳。

定时器事件

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;并一直循环

posted on 2021-04-19 16:49  一杯清酒邀明月  阅读(1940)  评论(0编辑  收藏  举报