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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: [РЕШЕНО] событие открытия\инициализации формы  (Прочитано 6334 раз)
unkeep
Гость
« : Июль 29, 2013, 12:14 »

Какое событие слушать в случае, если надо подключиться к бд и вычитать данные ПОСЛЕ инициализации и открытии виджета? Непонимающий У меня сча все эти действия  в конструкторе окна, а я хочу чтобы окно сначала показалось, а уже потом пошла загрузка из базы.  
« Последнее редактирование: Июль 30, 2013, 11:37 от unkeep » Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Июль 29, 2013, 12:57 »

showEvent
Записан

Изучением 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
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #2 : Август 01, 2013, 13:40 »

Код:
QTimer::singleShot(0, this, SLOT(slotDelayedInit()));

В слоте slotDelayedInit() читаешь данные.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #3 : Август 01, 2013, 14:10 »

так все-таки какой подход правильнее: showEvent или таймер?
Записан

Изучением 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
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #4 : Август 01, 2013, 14:28 »

я считаю традиционным подход с таймером, это даже было в рекомендациях к написанию программ с тяжёлой инициализацией то ли у КДЕ-шников, то ли у троллей. Более того, showEvent посылается перед тем как окно показано, а не после, а это значит, что окно не будет показано на экране до тех пор пока не закончится вызов showEvent() (не тестировал). Также showEvent() будет вызываться каждый раз как ты сворачиваешь/разворачиваешь окно, а это значит нужно заводить переменную типа bool initizlized по которой смотреть нужно делать инициализацию программы ли нет.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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