1

这是我的情况:

我已经连接了以下内容:

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 秒超时时,循环将起作用并进行治疗?

4

1 回答 1

2

不,你QTimer完全不正确地使用。它的目的不是测量时间,而是在指定的时间间隔调用槽。例如,如果您调用start,则您的插槽将在 5 秒后被调用,然后将在 5 秒后再次调用,等等。isActive在您调用 之前将始终如此stop

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

于 2013-07-11T09:42:32.557 回答