Qt QObject定时器和QTimer具体使用及区别

Qt中定时器的使用有两种方法,一种是使用QObject类提供的定时器,还有一种就是使用QTimer类。QTime功能支持按照设定的毫秒来执行一段函数,而QObject则是将QTimer再封装了一层,提供了一些更便利的接口。两者本质上没有区别,但是实际应用的过程中还是各有特点以及应用场景的区别的,接下来本文将会详细的介绍两个定时器的优缺点以及应用场景和提供示例具体说明。

上一章节详细的介绍了QTime的使用,这一文会举例介绍QObject定时器的使用,QTime与QObject的区别。


转载请附上连接,本帖原创请勿照抄。

1.QTime定时器

QTime定时器主要通过实例化QTime函数、绑定QTime信号和关联槽函数来实现定时器的开启。

优点是:可以通过设置毫秒来对绑定的槽函数开始执行,执行即开始,结束则关闭;

缺点是:只可以执行一次,而QObject定时器则可以一直执行完美的解决了这一问题。

当然如果自己实现QTime多次一直循环也是可以不过肯定右点费劲不如直接使用QObject定时器来解决这一难题。上篇文章详细的举出示例来介绍QTime所以本文不在进行具体的示例编写,想了解可以直接点开有详细示例。

2.QObject定时器

QObject::startTimer():可以把一个一毫秒为单位的时间间隔作为参数来开始定时器,这个函数返回一个唯一的整数定时器的标识符。这个定时器开始就会在每一个时间间隔"触发",直到明确的使用这个定时器的标识符来调用QObject::killTimer()结束。

QObject定时器主要通过实例化重写timerEvent时间事件:当定时器触发时,应用程序会发送一个QTimerEvent。在事件循环中,处理器按照事件队列的顺序来处理定时器事件。当处理器正忙于其它事件处理时,定时器就不能立即处理。

int id1=startTimer(1000);可以获取QObject定时器的ID。

当定时器事件发生时,虚函数timerEvent()随着QTimerEvent事件参数类一起被调用,重载这个函数可以获得定时器事件。

QObject可以多个开启,但是需要注意ID号,因为每次开启一个ID号随机,所以需要注意记录好ID号。

.h
protected:
    virtual void timerEvent(QTimerEvent*event);
.cpp
//构造函数
//开启一个定时器
id1=startTimer(1000);
qDebug()<<QString::number(id1);//打印定时器ID

//时间事件
void MainWindow::timerEvent(QTimerEvent*event)
{
    //TODO 业务代码
}

//关闭定时器
killTimer(1);

 

 

 

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

双子座断点

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值