【Qt】定时器

QTimer是qt中的单次和重复定时器。

其主要有两种使用方式,一种是定时事件,一种是通过信号与槽。

一.定时事件timerEvent

使用

1.在需要定时器的类中使用startTimer(x)进行定时设置和启动

函数原型:

int id = startTimer(x);

其中,x是时间间隔,单位是毫秒ms,startTimer会自动启动该定时器。

返回值是该定时器独一无二的id。

2.同时需要使用定时事件timerEvent完成具体的定时任务。

void timerEvent(QTimerEvent* ev){
    if(ev->timerId() == id){//判断是否是定时器id
        //该定时器具体的定时事件
    }
 
    if(ev->timerId() == id2){//判断是否是定时器id2
        //该定时器2具体的定时事件
    }
 
    ...
}

代码示例:

Widget::Widget(QWidget *parent)//构造函数
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    id1 = startTimer(1000);//id1已经设置为成员变量
}
 
void Widget::timerEvent(QTimerEvent* event){//定时事件
    if(event->timerId() == id1){
        qDebug() << "hello qt";
    }
}

运行结果:

二.QTimer对象


大多数情况下我们通过使用信号与槽connect的形式完成定时任务。

使用:

首先创建一个QTimer类对象,调用start函数完成定时和启动。

之后将QTimer对象的timeout信号与自定义的任务槽函数connect即可

同样以每隔1秒打印一次hello Qt为例。

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    QTimer* t = new QTimer(this);//加入对象树
    t->start(1000);
    //以lambda表达式的形式设置槽函数
    connect(t, &QTimer::timeout, [=]{
        qDebug() << "hello";
    });
}

运行结果:

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值