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())。适合需要更高性能或更细粒度控制的任务。
以上就是qt中start()和starttimer()的区别小结的详细内容,更多关于qt start()和starttimer()的资料请关注代码网其它相关文章!
发表评论