Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
QTimer实际上是什么时候开始的?_Qt_Qtimer - Fatal编程技术网

QTimer实际上是什么时候开始的?

QTimer实际上是什么时候开始的?,qt,qtimer,Qt,Qtimer,当应用程序调用QTimer::start()时,它是立即启动还是将在处理当前事件后启动?换句话说,如果在其timeout()插槽中进行长时间处理,我是否应该使用带时间校正的单次触发计时器?要确定回答,需要在Qt内检查特定于平台的代码。这是一个好迹象,说明这不是你应该依赖的东西。此外,在准确性方面也没有太多承诺: 计时器永远不会在指定的超时值之前超时 并且不保证在指定的精确值时超时。 在许多情况下,他们可能会超时一段时间,即 取决于系统计时器的精度 计时器的准确性取决于底层操作系统和 硬件。不过,

当应用程序调用
QTimer::start()
时,它是立即启动还是将在处理当前事件后启动?换句话说,如果在其
timeout()
插槽中进行长时间处理,我是否应该使用带时间校正的单次触发计时器?

要确定回答,需要在Qt内检查特定于平台的代码。这是一个好迹象,说明这不是你应该依赖的东西。此外,在准确性方面也没有太多承诺:

计时器永远不会在指定的超时值之前超时 并且不保证在指定的精确值时超时。 在许多情况下,他们可能会超时一段时间,即 取决于系统计时器的精度

计时器的准确性取决于底层操作系统和 硬件。不过,大多数平台支持1毫秒的分辨率 在许多情况下,计时器的精度将不等于此分辨率 现实世界的情况

如果Qt无法提供所需的计时器点击次数,它将 会默默的丢弃一些


如果您需要准确地知道超时信号之间经过了多少时间,请结合使用
QTimer

我不需要连续超时之间的高精度(因为这在非实时操作系统中是不可能的)。我只需要保持平均速度(即消除增长漂移)。所以,我仍然需要使用QelasedTimer校正的单发镜头?是的。否则,超时之间的平均时间将大于指定的时间。不过,通常我会尝试仅使用
QTimer
来触发更新,并将从
qelasedtimer
经过的时间作为时间步长传递到我的更新函数中。根据您正在做的事情,将更新更改为将时间步长作为参数可能是可能的,也可能是不可能的,但如果可以,我建议您这样做。好的,谢谢。事实上,这是相同的,唯一的区别是它是用于后处理而不是预处理(我的案例)。