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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: [решено] Вызвать диалог сразу после первой отрисовки главного окна, поверх окна  (Прочитано 2470 раз)
fiery xray
Гость
« : Август 14, 2011, 01:37 »

У меня программа, которая соединяется с внешним файлом (базой данной), который лежит у неё в корне.
Я хочу, чтобы она при запуске смотрела, есть он у неё в корне или нету, и если нету, вызывала диалог "выберите файл".

Она его действительно вызывает, если эту проверку осуществить, допустим, в конструкторе.
Однако мне хочется, чтобы этот диалог не просто выводился в самом начале, а выводился поверх моего главного окна в самом начале.

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

Non-spontaneous show events are sent to widgets immediately before they are shown

ну вот, а мне хочется сразу после того как в первый раз shown

я вот ещё подумал, можно таймер задействовать, а нет ли чего-нибудь поизящней?
« Последнее редактирование: Август 14, 2011, 01:51 от fiery xray » Записан
fiery xray
Гость
« Ответ #1 : Август 14, 2011, 01:43 »

наверно можно переопределить сам метод show в котором сначала вызвать show от класса-родителя, а затем эту проверку

updнет, плохо, метод не виртуальный. это под критерий изящности не подходит.

upd2 Зато работает! ну и фиг с ним, всё равно моё окно никто в вектор запихивать не будет
« Последнее редактирование: Август 14, 2011, 01:51 от fiery xray » Записан
fiery xray
Гость
« Ответ #2 : Август 14, 2011, 02:02 »

всё правильно, я думаю, у нас тут не джава какая-нибудь, чтобы все подряд методы виртуальными делать
главному окну совсем не неприлично переопределить show()
Записан
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #3 : Август 14, 2011, 03:17 »

show() - не виртуальный. НО show()  - этот вызов setVisible( true ).
А вот setVisible - виртуальный.
Записан
fiery xray
Гость
« Ответ #4 : Август 14, 2011, 16:27 »

да, правда.
это даже более логично - теперь проверка не при одном show() а всегда при setVisible(true)

теперь всё идеально. спасибо
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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