定时器事件
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
//启动定时器
TimerId=startTimer(1000);
connect(ui->BtnCloseTimer,&QPushButton::clicked,[=](){
killTimer(TimerId);
//关闭连接 这种写法是关闭指定对象的所有连接
disconnect(ui->BtnCloseTimer,0,0,0);
});
}
Widget::~Widget()
{
delete ui;
}
void Widget::timerEvent(QTimerEvent *ev)
{
static int num=0;
int TimerId=ev->timerId();
ui->label->setText(QString().number(num++));
}
多个定时器的区分
startTimer的返回值是一个定时器的ID值,可以在timerEvent回调函数中的参数里面通过timerId方法获取.
定时器类
使用定时器类,可以不用去区分定时器ID,独立性更强
#include "widget.h"
#include "ui_widget.h"
#include "QTimer"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
//定时器第二种方式
QTimer *timer=new QTimer(this); //挂到对象树上 自动释放内存
timer->start(1000);
static int num=0;
connect(timer,&QTimer::timeout,ui->label,[=](){
ui->label->setText(QString::number(num++));
});
}
Widget::~Widget()
{
delete ui;
}