Qt 提供如 QBasicTimer QDeadlineTimer QElapsedTimer QTimer 的计时器。
注意: 当 (采用计时器或类似功能) 异步处理任务时,可能存在 RuntimeError TypeError 等异常。
在编写带 GUI 的应用程序时,一般组件都可顺序、连续执行。
对性能要求较高的 GUI 程序而言,可能出现阻塞现象,尤其是低配置电脑。
解决办法: 使用超时计时器、使用异步线程、或调用 QObject::startTimer。
譬如:文本编辑器,内容很多时鼠标、键盘会无响应 (或要等很长时间)。
QTimer 提供单次 间隔计时功能。
单次计时只使用一次,QTimer 可以作为局部变量,但不如间隔计时可靠。
间隔计时可重复使用,但 QTimer 必须作为父级的变量 (或属性) 以可靠工作,否则会有不确定行为。
QTimer 实例最好放在 QThread 实例之后,否则可能产生意想不到的情况 (或在操作完成后再将其移回原线程)。
计时器最低超时,可设为 25 ms (微软 Windows 操作系统,粗糙计时器延迟)。
若此超时时间不足,可适当延长 (不使用时,要及时删除计时器)。
QObject 有线程倾向性。
QObject 除具有 timerEvent 计时器事件外,还可以拥有其它计时器。
QObject 具有 timerEvent 计时器事件,若计算不密集,异步操作首选 QTimer (尤其是使用 PyQt PySide)。
若计算密集且要不阻塞,优先采用 QThread 及其 timerEvent 计时器事件。
另请参阅:
版权声明: 本文为独家原创稿件,版权归 乐数软件 ,未经许可不得转载。