Я хотел бы иметь всплывающее окно, которое длится всего 20 секунд. Я думаю, что использовать QTimer, но можно ли установить динамическое сообщение, указывающее оставшиеся секунды?Ограничить отображение продолжительности для всплывающего окна в Qt
0
A
ответ
1
Вы можете наследовать от QDialog и использовать два события QTimer. Первый набор запускается через 20 секунд, а затем закрывает диалог, а второй запускает каждую секунду и обновляет QLabel с оставшимся временем. Таким образом, при отображении QDialog вы могли бы сделать что-то вроде этого: -
m_DialogClose = startTimer(20 * 1000); // 20 seconds
m_RemainingTime = startTimer(1 * 1000); // 1 second
Затем переопределить функцию TimerEvent в вашем диалоге: -
void MyDialog::timerEvent(QTimerEvent *event)
{
if(event->timerId() == m_DialogClose)
{
// close the dialog
}
else if(event->timerId() == m_RemainingTime)
{
// update the relevant QLabel text
}
}
+1 Но один QTimer с stSingleShot (ложь) , интервал 1 сек и счетчик будет – Trompa
@Trompa, да, это еще один возможный метод, хотя QDialog уже включает в себя функции таймера, которые я использую, поэтому вам не нужно обрабатывать соединение сигнала и слотов QTimer. Либо это сработает. Кроме того, хотя в этом случае это не имеет значения, я обнаружил, что много объектов QTimer вызывает проблемы, поэтому, когда это не требуется, я пытаюсь использовать встроенные таймеры объектов. – TheDarkKnight
Yup, просто давая идеи;) – Trompa