Я начал Таймер ждать, пока определенное условие будет истинным. Условие IF истинно, тогда я останавливаю таймер и не хочу, чтобы сигнал тайм-аута выдавал или выполнял подключенный слот. Но если условие является ложным в течение указанного времени, тогда он полностью испускает таймаут сигнала(). Но в любом случае он всегда излучает сигнал таймаута. Я также использовал 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 я попытался испустить уничтоженный сигнал, но получил ответ, что он не может подключиться. pLease совет мне.
Несколько вещей выглядят подозреваемый - в 'timerStart()' вы игнорируете переданный параметр 'timer' и не сохраняете свой вновь созданный таймер, поэтому у вас нет способа его остановить. Где вы получаете таймер, который вы передаете 'timerStop()'? Возможно, вы хотели передать 'QTimer * &' на 'timerStart()' или хранить таймер в члене или (ugh) глобальном? –