定时器事件
1、开启一个定时器:
int startTimer(int interval, Qt::TimerType timerType = Qt::CoarseTimer);
功能:启动一个定时器事件并返回一个定时器id
参数说明:
interval:定时器的触发时间(触发的间隔时间)
2、关闭定时器
void QObject::killTimer(int id)
功能:关闭指定id的定时器
参数说明:
id:启动定时器时返回的id
3、定时器事件
virtual void timerEvent(QTimerEvent *event);
功能:当启动定时器后自动调用的函数(虚函数需要重写)
参数说明:
event:事件(可用于判断当前发生的事件等)
4、示例代码
mainwindow.h文件
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QTimer>
#include <QDebug>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
void timerEvent(QTimerEvent *e);
~MainWindow();
private:
Ui::MainWindow *ui;
int timerid1;
int timerid2;
};
#endif // MAINWINDOW_H
mainwindow.cpp文件:
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
timerid1 = startTimer(1000);
timerid2 = startTimer(3000);
}
void MainWindow::timerEvent(QTimerEvent *e)
{
if(e->timerId()==timerid1)
{
qDebug("timer1");
}
else if(e->timerId()==timerid2)
{
qDebug("timer2");
}
}
MainWindow::~MainWindow()
{
delete ui;
}
main.cpp文件
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
5、运行结果
timer1是每秒调用一次定时器事件,timer是每三秒调用一次定时器事件,因此输出顺序为先输出两个timer1再输出一个timer2并且马上输出一个timer1;并一直循环