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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как отловить событие появления диалога на экране  (Прочитано 4870 раз)
radislav72
Гость
« : Январь 26, 2015, 16:27 »

Здравствуйте!

Нужно после открытия окна (QDialog) показать пользователю сообщение. Как отловить момент, когда диалог уже появился на экране?
Записан
Bepec
Гость
« Ответ #1 : Январь 26, 2015, 16:36 »

QWidget::showEvent не прокатывает?
Записан
Kurles
Бывалый
*****
Offline Offline

Сообщений: 480



Просмотр профиля
« Ответ #2 : Январь 26, 2015, 16:38 »

QWidget::showEvent не прокатывает?
Судя по доке, оно вызывается перед тем, как диалог показывается.
Записан

Код
C++ (Qt)
while(!asleep()) sheep++;
radislav72
Гость
« Ответ #3 : Январь 26, 2015, 16:53 »

Дело в том, что showEvent генерируется перед показом диалога, и получается, что сначала пользователь видит сообщение (окна диалога в это время еще нет), а когда закрывает сообщение, то появляется диалог.

А надо наоборот
Записан
Bepec
Гость
« Ответ #4 : Январь 26, 2015, 16:54 »

Нет она вызывается как раз после. Много раз пользовался этим, чтобы окно сначала появилось, отработав конструктор и инициализацию.

Хотя с другой стороны надо в пятерке попробовать. я ж на 4 Улыбающийся

Попробовал на пятерке - да, перед появлением окна появляется.
« Последнее редактирование: Январь 26, 2015, 17:24 от Bepec » Записан
radislav72
Гость
« Ответ #5 : Январь 26, 2015, 17:41 »

У меня 4.7.4, - срабатывает перед появлением окна.
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #6 : Январь 26, 2015, 18:50 »

Перегрузи QDialog::setVisible()
Код
C++ (Qt)
void Dialog::setVisible( bool set )
{
       QDialog::setVisible( set );
       if( set )
         // dialog window now on screen
}
Записан

Qt 5.11/4.8.7 (X11/Win)
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4724



Просмотр профиля WWW
« Ответ #7 : Январь 26, 2015, 22:08 »

а если через таймер-синглшот?
Записан

Изучением 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
radislav72
Гость
« Ответ #8 : Январь 27, 2015, 10:07 »

Спасибо, через setVisible все как надо
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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