Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: radislav72 от Январь 26, 2015, 16:27



Название: Как отловить событие появления диалога на экране
Отправлено: radislav72 от Январь 26, 2015, 16:27
Здравствуйте!

Нужно после открытия окна (QDialog) показать пользователю сообщение. Как отловить момент, когда диалог уже появился на экране?


Название: Re: Как отловить событие появления диалога на экране
Отправлено: Bepec от Январь 26, 2015, 16:36
QWidget::showEvent не прокатывает?


Название: Re: Как отловить событие появления диалога на экране
Отправлено: Kurles от Январь 26, 2015, 16:38
QWidget::showEvent не прокатывает?
Судя по доке, оно вызывается перед тем, как диалог показывается.


Название: Re: Как отловить событие появления диалога на экране
Отправлено: radislav72 от Январь 26, 2015, 16:53
Дело в том, что showEvent генерируется перед показом диалога, и получается, что сначала пользователь видит сообщение (окна диалога в это время еще нет), а когда закрывает сообщение, то появляется диалог.

А надо наоборот


Название: Re: Как отловить событие появления диалога на экране
Отправлено: Bepec от Январь 26, 2015, 16:54
Нет она вызывается как раз после. Много раз пользовался этим, чтобы окно сначала появилось, отработав конструктор и инициализацию.

Хотя с другой стороны надо в пятерке попробовать. я ж на 4 :)

Попробовал на пятерке - да, перед появлением окна появляется.


Название: Re: Как отловить событие появления диалога на экране
Отправлено: radislav72 от Январь 26, 2015, 17:41
У меня 4.7.4, - срабатывает перед появлением окна.


Название: Re: Как отловить событие появления диалога на экране
Отправлено: GreatSnake от Январь 26, 2015, 18:50
Перегрузи QDialog::setVisible()
Код
C++ (Qt)
void Dialog::setVisible( bool set )
{
       QDialog::setVisible( set );
       if( set )
         // dialog window now on screen
}


Название: Re: Как отловить событие появления диалога на экране
Отправлено: kambala от Январь 26, 2015, 22:08
а если через таймер-синглшот?


Название: Re: Как отловить событие появления диалога на экране
Отправлено: radislav72 от Январь 27, 2015, 10:07
Спасибо, через setVisible все как надо