我已经启动Timer来等待某个条件为真。如果条件是真的,那么我停止定时器,并且不希望超时信号发出或执行连接的插槽。但是如果在指定的时间内条件是错误的,那么它就会发出信号timeout()。但无论如何,它总是会发出超时信号。我也使用了blockSignals(true),它不起作用。有人可以请教我。避免QTimer发出超时信号
void timerStart(QTimer* timer, int timeMillisecond)
{
timer = new QTimer(this);
timer->setInterval(timeMillisecond);
timer->setSingleShot(true);
connect(timer, SIGNAL(timeout()), this, SLOT(noRespFrmServer())) ;
//timer->start(timeMillisecond);
timer->start();
}
void timerStop(QTimer* timer)
{
connect(timer, SIGNAL(destroyed(timer)), this, SLOT(stopTimerbeforeTimeout()));
qDebug() << " we are in timer stop";
if(timer)
{
timer->stop();
timer->blockSignals(true);
delete timer;
}
}
也在timerStop函数我试图发出摧毁的信号,但我得到了它无法连接的响应。 请教我。
几件事情看起来嫌疑人 - 中'timerStart()'你忽略传递的参数'timer',并且不存储你新创建的定时器,所以你无法阻止它。你在哪里得到你传递给'timerStop()'的计时器?你可能意味着将'QTimer *&'传递给'timerStart()',或者将该定时器存储在成员或(ugh)全局中? –