Russian Qt Forum
Март 29, 2024, 02:26 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QMessageBox: проблема с автозакрытием.  (Прочитано 3204 раз)
Сергей85
Гость
« : Апрель 18, 2017, 20:26 »

Сделал таймер, что по timeout вызывает close мессаджбокса через 30 сек. Однако требуется отображать рядом с клавишей по умолчанию (или просто в тексте мсгбокса) сколько секунд осталось.

Как понимаю, нужно сделать функцию, меняющую detailedText мсгбокса, обновляя в нем инфу об оставшихся секундах. Но 2 затыка: как написать данную функцию и связать ее с timeout таймера (затыки с этими сигналами-слотами); а также как сделать кнопку по умолчанию какую-то конкретную. Например, вместо OK - Cancel.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Апрель 18, 2017, 20:34 »

1. Отнаследуйся от QDialog
2. Lаведи в наследнике 2 таймера: один меняет текст, второй вызывает close.
3. Profit!!!
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4724



Просмотр профиля WWW
« Ответ #2 : Апрель 18, 2017, 20:40 »

что конкретно вызывает сложности? надо:
1. сохранить указатель на QMessageBox в член класса
2. создать свой метод-слот
3. привязать сигнал timeout к этому слоту вместо существующего close()
4. в слоте поменять текст бокса
5. в нужный момент закрыть бокс в этом слоте

а как поменять кнопку по умолчанию можно прочесть в документации.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #3 : Апрель 18, 2017, 20:52 »

что конкретно вызывает сложности? надо:
1. сохранить указатель на QMessageBox в член класса
2. создать свой метод-слот
3. привязать сигнал timeout к этому слоту вместо существующего close()
4. в слоте поменять текст бокса
5. в нужный момент закрыть бокс в этом слоте

а как поменять кнопку по умолчанию можно прочесть в документации.
Можно и так. Мое решение больше подходит, если в проекте такие диалоги используются в нескольких местах.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.053 секунд. Запросов: 22.