在Qt中,有两种主要的定时方式可以用来进行时间控制和执行定时任务:startTimer和QTimer
。
在Qt中,startTimer
是一个用于创建定时器的成员函数,通常在继承自 QObject
的类中使用。通过 startTimer
,你可以设置一个定时器,定时器会在指定的时间间隔内触发 timerEvent
事件。通过重写timerEvent
方法,你可以自定义定时器的行为。
QTimer
是一个定时器类,主要用于重复地触发信号,它用于调度定时操作。你可以设置一个时间间隔,当这个时间间隔到达时,QTimer
会发出一个 timeout()
信号。你可以通过将一个槽(slot)连接到这个信号来执行特定的操作。你可以通过使用timer->stop来暂停它。
下面展示我的主要代码以便理解和使用:
widget.cpp:
#include "widget.h"
#include "ui_widget.h"
#include <QTimer>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
//方法一
//启动定时器
//参数说明:参数1:时间间隔(毫秒)
//startTimer(1000);//有返回值,可以找到唯一标识ID
id1=startTimer(1000); //定时器1 处理函数在下面
id2=startTimer(2000); //定时器2
//方法二
QTimer * timer=new QTimer(this);
//启动定时器
timer->start(500);//0.5秒
connect(timer,&QTimer::timeout,[=](){
static int num2=1;
ui->label_3->setText(QString::number(num2++));
});//使用timer->stop可以暂停
}
void Widget::timerEvent(QTimerEvent * e)
{
if(e->timerId()==id1)
{
//每1秒加1
static int num=1;//静态变量,不会每次进入定时器函数就给num赋1
ui->label->setText(QString::number(num++));
}
if(e->timerId()==id2)
{
//每两秒加1
static int num1=1;//静态变量,不会每次进入定时器函数就给num赋1
ui->label_2->setText(QString::number(num1++));
}
}
Widget::~Widget()
{
delete ui;
}
注意:id1,id2为int类型且在widget.h的公共作用域下定义。
下面为我的ui界面,只使用了三个Label标签
感谢观看!