Я создаю простую игру, которая показывает обратный отсчет времени для пользователя, начиная с 1:00 и заканчивая обратным отсчетом до нуля.По достижении 0:00 я хочу отобразить сообщение типа «время истекло!».
В настоящее время у меня есть объект QTimer и QTime (QTime начинается с 00:01:00)
QTimer *timer=new QTimer();
QTime time{0,1,0};
В конструкторе я устанавливаю таймер на тайм-аут каждую 1 секунду, и он связан с событием, которое обновляет обратный отсчет на экране, который первоначально отображает таймер на 1: 00:
connect(timer, SIGNAL(timeout()), this, SLOT(updateCountDown()));
timer->start(1000);
ui->countdown->setText(time.toString("m:ss"));
Этот слот вызывается каждую 1 секунду:
void MainWindow::updateCountDown(){
time=time.addSecs(-1);
ui->countDown->setText(time.toString("m:ss"));
}
Теперь мне нужно иметь возможность вызывать новый метод всякий раз, когда QTime достигает 0:00.Я не очень заинтересован в добавлении if
к методу updateCountdown, чтобы проверить, находится ли QTime в 0:00 каждую секунду.Я также подумал, может быть, я мог бы добавить второй QTimer, который истекает через 1 минуту, но я не уверен, будут ли оба объекта QTimer запускаться в одно и то же время, поэтому 1-минутный тайм-аут произойдет именно тогда, когда объект QTime будет в 0:00.
Так есть ли способ добавить второй тайм-аут к тому же объекту QTimer (тайм-аут один раз в секунду, чтобы обновить обратный отсчет на экране, а затем второй тайм-аут после 1 минуты, чтобы завершить игру? Я подозреваю,ответ будет «нет», но в таком случае какой подход будет наилучшим? (если ни один из моих вариантов не действителен, есть ли лучший способ сделать это?).