start() - QTimer 类的成员函数
start() 是 QTimer 类的成员函数,用于启动一个基于 QTimer 对象的定时器。QTimer 是 Qt 中常用的定时器类,它会在设定的时间隔断后发出 timeout() 信号。
用法
- QTimer timer;
- timer.start(1000); // 每隔 1000 毫秒触发一次 timeout() 信号
复制代码
- 1. 参数:start(int msec),此中 msec 是时间隔断(以毫秒为单位)。
- 2. 触发信号:其时间隔断结束时,QTimer 会发出 timeout() 信号,你可以将这个信号连接到一个槽函数来处理。
示例
- QTimer timer;
- QObject::connect(&timer,SIGNAL(timeout(), this, SLOT(on_m_clock_timeout());
- timer.start(1000); // 每隔 1000 毫秒调用一次 onTimeout()
复制代码
- 1. 连接信号与槽:通过 connect(),你可以将 SIGNAL(timeout())信号连接到一个槽函数,如许每次定时器触发时,槽函数就会被调用。
- 2. 自动处理:QTimer 自动管理信号与槽,因此非常适合需要定期实行某些任务的场景。
startTimer() - QObject 类的成员函数
startTimer() 是 QObject 类的成员函数,用于启动一个低级别的定时器。它返回一个定时器 ID,之后可以通过 killTimer() 来停止该定时器。
用法
- 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企服之家,中国第一个企服评测及商务社交产业平台。 |