定时器
方式1:重写事件虚函数
void timerEvent(QTimerEvent*);
//注意需要在widget的构造函数中启动定时器,这是调用时机
int id=startTimer(1000); //返回int型的定时器标志
- 例1
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
//开启定时器
startTimer(1000);//参数1:时间间隔,单位,毫秒
}
Widget::~Widget()
{
delete ui;
}
void Widget::timerEvent(QTimerEvent *)
{
static int num=1; //静态成员变量,延长生命期
ui->label->setText(QString::number(num++));
}

- 例2
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
//开启定时器
id1=startTimer(1000);//参数1:时间间隔,单位,毫秒
id2=startTimer(2000);
}
Widget::~Widget()
{
delete ui;
}
void Widget::timerEvent(QTimerEvent *ev)
{
if(ev->timerId()==id1)
{
static int num=1; //静态成员变量,延长生命期
ui->label->setText(QString::number(num++));
}
if(ev->timerId()==id2)
{
static int num=1;
ui->label2->setText(QString::number(num++));
}
}
方式2:实例化类对象
必须包含的头文件:
#include<QTimer>
涉及到的方法:
1.QTimer类的构造函数,创建一个定时器类
QTimer*timer=new QTimer(this);
2.调用QTimer的方法,启动定时器
timer->start(500);
3.连接QTimer的信号和某控件的槽函数
connect(timer,&QTimer::timeout,[=](){
static int num=1;
ui->label->setText(QString::number(num++));
});
- 例子
#include "widget.h"
#include "ui_widget.h"
#include<QPushButton>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
QTimer*timer=new QTimer(this);
timer->start(1000);
connect(timer,&QTimer::timeout,this,[=]()
{
static int num=1;
ui->label->setText(QString::number(num++));
});
connect(ui->btn,&QPushButton::clicked,[=](){
timer->stop();
});
connect(ui->btn2,&QPushButton::clicked,[=](){
timer->start();
});
}
Widget::~Widget()
{
delete ui;
}


浙公网安备 33010602011771号