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