Название: QMessageBox: проблема с автозакрытием. Отправлено: Сергей85 от Апрель 18, 2017, 20:26 Сделал таймер, что по timeout вызывает close мессаджбокса через 30 сек. Однако требуется отображать рядом с клавишей по умолчанию (или просто в тексте мсгбокса) сколько секунд осталось.
Как понимаю, нужно сделать функцию, меняющую detailedText мсгбокса, обновляя в нем инфу об оставшихся секундах. Но 2 затыка: как написать данную функцию и связать ее с timeout таймера (затыки с этими сигналами-слотами); а также как сделать кнопку по умолчанию какую-то конкретную. Например, вместо OK - Cancel. Название: Re: QMessageBox: проблема с автозакрытием. Отправлено: Пантер от Апрель 18, 2017, 20:34 1. Отнаследуйся от QDialog
2. Lаведи в наследнике 2 таймера: один меняет текст, второй вызывает close. 3. Profit!!! Название: Re: QMessageBox: проблема с автозакрытием. Отправлено: kambala от Апрель 18, 2017, 20:40 что конкретно вызывает сложности? надо:
1. сохранить указатель на QMessageBox в член класса 2. создать свой метод-слот 3. привязать сигнал timeout к этому слоту вместо существующего close() 4. в слоте поменять текст бокса 5. в нужный момент закрыть бокс в этом слоте а как поменять кнопку по умолчанию можно прочесть в документации. Название: Re: QMessageBox: проблема с автозакрытием. Отправлено: Пантер от Апрель 18, 2017, 20:52 что конкретно вызывает сложности? надо: Можно и так. Мое решение больше подходит, если в проекте такие диалоги используются в нескольких местах.1. сохранить указатель на QMessageBox в член класса 2. создать свой метод-слот 3. привязать сигнал timeout к этому слоту вместо существующего close() 4. в слоте поменять текст бокса 5. в нужный момент закрыть бокс в этом слоте а как поменять кнопку по умолчанию можно прочесть в документации. |