QT教程:start()和startTimer()的区别

宝塔山  金牌会员 | 2024-9-6 01:20:50 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 510|帖子 510|积分 1530

start() - QTimer 类的成员函数

        start() 是 QTimer 类的成员函数,用于启动一个基于 QTimer 对象的定时器。QTimer 是 Qt 中常用的定时器类,它会在设定的时间隔断后发出 timeout() 信号。
用法

  1. QTimer timer;
  2. timer.start(1000);  // 每隔 1000 毫秒触发一次 timeout() 信号
复制代码

  •     1. 参数:start(int msec),此中 msec 是时间隔断(以毫秒为单位)。
  •     2. 触发信号:其时间隔断结束时,QTimer 会发出 timeout() 信号,你可以将这个信号连接到一个槽函数来处理。
示例 

  1. QTimer timer;
  2. QObject::connect(&timer,SIGNAL(timeout(), this, SLOT(on_m_clock_timeout());
  3. timer.start(1000);  // 每隔 1000 毫秒调用一次 onTimeout()
复制代码


  •      1.  连接信号与槽:通过 connect(),你可以将 SIGNAL(timeout())信号连接到一个槽函数,如许每次定时器触发时,槽函数就会被调用。
  •      2.  自动处理:QTimer 自动管理信号与槽,因此非常适合需要定期实行某些任务的场景。
startTimer() - QObject 类的成员函数 

        startTimer() 是 QObject 类的成员函数,用于启动一个低级别的定时器。它返回一个定时器 ID,之后可以通过 killTimer() 来停止该定时器。
用法 

  1. int timerId = startTimer(1000);  // 每隔 1000 毫秒触发一次定时器事件
复制代码


  •    1.  参数:startTimer(int msec),此中 msec 是时间隔断(以毫秒为单位)。
  •    2.  返回值:startTimer() 返回一个定时器 ID,你可以用这个 ID 来管理和停止定时器。
特点



  •    1.不依赖信号与槽:startTimer() 不使用信号与槽,而是通过变乱处理机制触发 timerEvent(),需要在派生类中重写 timerEvent() 函数来处理定时器变乱。。
  •    2.低级别定时器:startTimer() 是更低级别的定时器实现,实用于对性能要求较高或不需要复杂信号与槽机制的场景。
  •    3.手动停止:你可以使用 killTimer(timerId) 来停止通过 startTimer() 启动的定时器。
区别

特性
start() (QTimer)
startTimer() (QObject)

QTimer
QObject
触发机制
通过 timeout() 信号
调用 timerEvent() 变乱处理函数
使用场景
GUI 应用中,定期触发信号的场景
低级别定时器,适合对变乱和性能有特别需求的场景
停止定时器
stop()
killTimer(timerId)
依赖变乱循环
是(基于信号与槽机制)
是(通过变乱机制处理)
需要重写变乱处理

是,需要重写 timerEvent()
是否返回定时器 ID

是,返回定时器 ID
适合应用
适合需要信号与槽的定时器变乱(如更新UI、动画)
适合更细粒度控制和性能要求的场景(如后台处理、非GUI应用)
总结



  •        1. start() (QTimer):实用于典型的定时任务,利用信号与槽机制举行处理。它适合在 GUI 应用中使用,可以或许方便地每隔一段时间实行某个任务,而且可以轻松管理和停止定时器。
  •        2. startTimer() (QObject):实用于需要更低级别定时器控制的场景,必须手动处理定时器变乱(timerEvent()),并手动停止定时器(killTimer())。适合需要更高性能或更细粒度控制的任务。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

宝塔山

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表