—— 均为自学笔记,如有错误请指正
1. 定时器 timerEvent
- 每隔一秒计时一次
- 声明计时器事件<widget.h>
//重写定时器的事件
void timerEvent(QTimerEvent * );
- 定义计时器事件<widget.cpp>
//重写定时器的事件
void Widget::timerEvent(QTimerEvent * )
{
static int num = 1 ;
ui->label_2->setText( QString::number(num++));
}
- 启动计时器<widget.cpp>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
//启动定时器
startTimer( 1000); //参数1:间隔,单位:ms
}
- 结果
2. 定时器 <加判定>
- 每隔 两or一 秒计时一次
- 声明
public:
Widget(QWidget *parent = nullptr);
~Widget();
//重写定时器的事件
void timerEvent(QTimerEvent * );
int id1;//定时器1的唯一标识符
int id2;//定时器2的唯一标识符
- 定义
//重写定时器的事件
void Widget::timerEvent(QTimerEvent * ev)
{
if(ev->timerId() == id1)
{
//label_2每隔一秒 +1
static int num = 1 ;
ui->label_2->setText( QString::number(num++));
}
if(ev->timerId() == id2)
{
//label_3每隔2秒 +1
static int num2 = 1 ;
ui->label_3->setText( QString::number(num2++));
}
}
- 启动
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
//启动定时器
id1 = startTimer( 1000); //参数1:间隔,单位:ms
id2 = startTimer( 2000);
}
- 结果
3. 定时器类 <QTimer> 推荐
- 声明类 <widget.cpp>
#include<QTimer> //定时器类
- 使用类 <widget.cpp>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
//启动定时器
id1 = startTimer( 1000); //参数1:间隔,单位:ms
id2 = startTimer( 2000);//单位:ms
//定时器第二种方式
QTimer * timer = new QTimer(this);
//启动定时器
timer->start(500); //单位:ms
connect(timer,&QTimer::timeout,[=](){
//label_4每隔0.5秒 +1
static int num4 = 1 ;
ui->label_4->setText( QString::number(num4++));
});
}
- 结果
4. 点击按钮停止计时
- 使用 <widget.cpp>
//点击暂停按钮,实现停止定时器
connect(ui->btn,&QPushButton::clicked,[=](){
timer->stop();
});