Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: burunduk от Апреля 06, 2006, 12:11



Название: Cобытие о том, что окно создано и нарисовано
Отправлено: burunduk от Апреля 06, 2006, 12:11
Может я ещё не проснулся, но что-то недопойму как же мне выставить пользователю обычный MessageBox при старте приложения и при уже нарисованном главном окне.

Вызов из конструктора окна не подходит, так как главное окно еще не создано и не нарисовано.


Название: Cобытие о том, что окно создано и нарисовано
Отправлено: Hordi от Апреля 06, 2006, 12:25
Смотри функцию polish(). Также из polish() можно с запустить окно через таймер


Название: Cобытие о том, что окно создано и нарисовано
Отправлено: Dendy от Апреля 06, 2006, 12:34
Попробуй так. Создаёшь QMessageBox в динамической памяти, ставишь флаг Qt::WA_DeleteOnClose и делаешь ему [b[show()[/b] в конструкторе.


Название: Cобытие о том, что окно создано и нарисовано
Отправлено: Sergeich от Апреля 06, 2006, 16:26
Можно добавить в showEvent для главного окна


Название: Cобытие о том, что окно создано и нарисовано
Отправлено: burunduk от Апреля 06, 2006, 16:39
Хм, а если окно свернуть/развернуть ?
Хотя можно еще флажок конечно сделать.

Пока сделал как советовал Dendy. Кстати, спасиба :)

Надеялся, что всё же для такой простой задачи, должно быть простое решение. Я вообже ожидал от Qt сигнала, что всё прорисовано или protected ф-цию, которую можно заменить, и которая вызывается когда уже всё прорисовано.


Цитата: "Sergeich"
Можно добавить в showEvent для главного окна


Название: Cобытие о том, что окно создано и нарисовано
Отправлено: alex0303 от Апреля 06, 2006, 19:38
В конструкторе вызвать
Код:

QTimer::singleShot (0, this, SLOT(slotStarted()));


НУ а в slotStarted() уже свой MessageBox или хоть что другое.

Цитировать
As a special case, a QTimer with timeout 0 times out as soon as all the events in the window system's event queue have been processed.