Qt中创建定时器

文章介绍了在Qt编程中如何处理多个定时器事件。当需要一个以上定时器时,可以利用startTimer的返回值作为标识或创建QTimer对象来区分不同定时器。通过比较QTimerEvent的timerId与启动定时器时的ID,或者使用QTimer对象的timeout信号进行相应操作,如更新标签内容。
摘要由CSDN通过智能技术生成

在Qt中会用到定时器事件,若是仅仅只用到一个定时器的画那就十分简单,只需要添加个定时器事件,总的来说就是调用Widget的成员函数,同时设置一个int型的静态变量,让这个数字不断累加,值得注意的是对label进行操作时,输入的文本信息用从int转为string型。代码如下

startTimer(1000);//单位是 毫秒
//添加定时器事件
void Widget::timerEvent(QTimerEvent *e)
{
    //每隔一秒 让label_2数字++
        static int num = 1;
        ui->label_2->setText(QString::number(num++));
}

但若是需要有两个以上的定时器就不能按照上述方法了,因为无法知道判断让对应的定时器执行对应的事件。这就需要利用startTimer函数的返回值作为定时器的唯一标识,利用此标识和QTimerEvent中的函数返回值进行对比即可判断定时器是否对应到了准确的事件,代码如下

//开启定时器
id1 = startTimer(1000);//单位是 毫秒

id2 = startTimer(2000);//单位是 毫秒

//添加定时器事件
void Widget::timerEvent(QTimerEvent *e)
{
    //每隔一秒 让label_2数字++
    if(e->timerId() == id1)
    {
        static int num = 1;
        ui->label_2->setText(QString::number(num++));
    }
    //每隔2秒 让label_3 数字++
    if(e->timerId() == id2)
    {
    static int num2 = 1;
    ui->label_3->setText(QString::number(num2++));
    }
}

另外一种方法也是最值得推荐的,通过创建一个定时器对象,这种好处就是需要多少个定时器就new多少个,不用去验证定时器的唯一标识

//创建定时器对象
    QTimer * timer1 = new QTimer(this);
    timer1->start(500);
    //每隔0.5秒 会抛出一个信号
    connect(timer1,&QTimer::timeout,[=](){
        //每隔0.5秒 让label_4数字++
        static int num = 1;
        ui->label_4->setText(QString::number(num++));
    });

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值