Q定时器和活动状态

QTimer and active status

本文关键字:活动状态 定时器      更新时间:2023-10-16

这是我的情况:

我已经连接了以下内容:

connect(timer, SIGNAL(timeout()), this, SLOT(avg()));
timer->start(5000);

avg()的时间计算为1秒。所以对于avg函数,我应该有一个5个值的平均值。

在avg()函数中,是否允许写入,当计时器处于活动状态时,它会像上面那样计算平均值:

do
{ 
... // Saving all values, within the 5 seconds of timer and averaging them
}
while **(timer->isActive())**;

我的问题/询问:粗体字段(timer->isActive())是否意味着循环将工作并进行治疗,而定时器还没有从固定的5秒开始计时?

不,您完全错误地使用了QTimer。它的目的不是测量时间,而是在指定的时间间隔调用时隙。例如,如果您调用start,5秒后将调用您的插槽,然后5秒后再次调用,等等。在调用stop之前,isActive将始终为true。

QElapsedTimer将对您的目的更有帮助。调用start初始化定时器。检查是否应使用timer.elapsed() >= 5000终止该过程。