以下是我的情况:
我已经连接了以下内容:
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())**;
我的问题/查询:是粗体字段(计时器 - > isActive())意味着循环将工作并进行处理,而计时器没有从固定的5秒超时?
答案 0 :(得分:1)
不,您完全错误地使用QTimer
。其目的不是测量时间,而是以指定的时间间隔调用插槽。例如,如果您拨打start
,您的广告位将在5秒后被调用,之后将在5秒后再次调用,等等。isActive
将始终为真,直到您拨打stop
为止
QElapsedTimer
对您的目的更有帮助。调用start
初始化计时器。检查是否应使用timer.elapsed() >= 5000
终止该过程。