Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: unkeep от Июль 29, 2013, 12:14



Название: [РЕШЕНО] событие открытия\инициализации формы
Отправлено: unkeep от Июль 29, 2013, 12:14
Какое событие слушать в случае, если надо подключиться к бд и вычитать данные ПОСЛЕ инициализации и открытии виджета? ??? У меня сча все эти действия  в конструкторе окна, а я хочу чтобы окно сначала показалось, а уже потом пошла загрузка из базы.  


Название: Re: событие открытия\инициализации формы
Отправлено: kambala от Июль 29, 2013, 12:57
showEvent


Название: Re: [РЕШЕНО] событие открытия\инициализации формы
Отправлено: Alex Custov от Август 01, 2013, 13:40
Код:
QTimer::singleShot(0, this, SLOT(slotDelayedInit()));

В слоте slotDelayedInit() читаешь данные.


Название: Re: [РЕШЕНО] событие открытия\инициализации формы
Отправлено: kambala от Август 01, 2013, 14:10
так все-таки какой подход правильнее: showEvent или таймер?


Название: Re: [РЕШЕНО] событие открытия\инициализации формы
Отправлено: Alex Custov от Август 01, 2013, 14:28
я считаю традиционным подход с таймером, это даже было в рекомендациях к написанию программ с тяжёлой инициализацией то ли у КДЕ-шников, то ли у троллей. Более того, showEvent посылается перед тем как окно показано, а не после, а это значит, что окно не будет показано на экране до тех пор пока не закончится вызов showEvent() (не тестировал). Также showEvent() будет вызываться каждый раз как ты сворачиваешь/разворачиваешь окно, а это значит нужно заводить переменную типа bool initizlized по которой смотреть нужно делать инициализацию программы ли нет.