定时器事件TimerEvent

定时器1

使用定时器:

  • 打开定时器。规定间隔时间,单位是毫秒,意思就是每隔一个时间就会去执行定时器事件的函数,并且每个定时器都有唯一的ID标识,这样就可以设置多个定时器了
  • 重写父类的虚函数,定时器函数,最好加上override,防止函数名写错
  • 定时器的参数可以判断定时器的ID号,从而知道是那个定时器调用的函数。
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    //在构造函数中启动定时器
    //第一个参数时间隔时间,单位毫秒
    //每启动一个定时器都对应着一个定时器的ID号,就是函数的返回值
    id1 = startTimer(1000);
    id2 = startTimer(200);
}
//根据定时器,每隔对应的时间会调用一次函数
void Widget::timerEvent(QTimerEvent *e)
{
    static int num1 = 1;
    static int num2 = 1;
    //要判断是哪个定时器的计数
    if (e->timerId() == id1)
    {
        ui->label->setText(QString::number(num1++));
    }
    if (e->timerId() == id2)
    {
        ui->label_2->setText(QString::number(num2++));
    }
}

在这里插入图片描述

定时器2

第二种方式不用重写父类的虚函数,Qt提供了QTimer这个类,我们也可以直接用它来实现定时。使用时需要先创建定时器的对象,如果需要多个定时器,就创建多个对象。

QTimer* time1 = new QTimer(this);
    time1->start(1000);
    connect(time1, &QTimer::timeout, [=]()
    {
        static int num = 1;
        ui->label_3->setText(QString::number(num++));
    });

这种写法特别简单,更推荐使用。start是开始,stop是停止计数,单位仍然是毫秒,在本例中没经过1000ms,就会触发一次timeout信号,所以使用信号和曹连接一下。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值