Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Wachburn от Март 24, 2010, 13:37



Название: MDI как сделать, чтоб дочернее окошко не уничтожалось
Отправлено: Wachburn от Март 24, 2010, 13:37
Есть главное окно, в нем вызываются виджеты, порожденные от QDialog, как сделать, чтоб при закрытии этих виджетов они не удалялись а просто скрывались... т.е. чтоб при каждом вызове этих окошек не нужно было заново их создавать командой new


Название: Re: MDI как сделать, чтоб дочернее окошко не уничтожалось
Отправлено: crossly от Март 24, 2010, 14:52
переопределить у них closeEvent.... и вписать туда hide();


Название: Re: MDI как сделать, чтоб дочернее окошко не уничтожалось
Отправлено: Wachburn от Март 24, 2010, 19:56
переопределить у них closeEvent.... и вписать туда hide();

Пробовал, чегото не получалось


Название: Re: MDI как сделать, чтоб дочернее окошко не уничтожалось
Отправлено: voronElf от Март 25, 2010, 09:10
насколько помню, чтобы виджет удалился при закрытии, ему специально нужно выставлять аттрибут WA_Delete_On_Close (как то так пишется). По умолчанию он не удаляется сам. Удалится может если: сами удаляете из кучи (delete), удаляется со стека (локальный объект в функции был) либо при удалении родителя. Что-то из этого происходит ...


Название: Re: MDI как сделать, чтоб дочернее окошко не уничтожалось
Отправлено: Wachburn от Март 25, 2010, 11:47
насколько помню, чтобы виджет удалился при закрытии, ему специально нужно выставлять аттрибут WA_Delete_On_Close (как то так пишется). По умолчанию он не удаляется сам. Удалится может если: сами удаляете из кучи (delete), удаляется со стека (локальный объект в функции был) либо при удалении родителя. Что-то из этого происходит ...

Если виджет(окошко) не добавлять в QMdiArea, то окно не удаляется, но если добавить, то почемуто удаляется... это какаято заморочка с QMdiArea... вот мне и интересно, что это за заморочка такая и как это обойти


Название: Re: MDI как сделать, чтоб дочернее окошко не уничтожалось
Отправлено: voronElf от Март 25, 2010, 12:53
ну с QMdiArea другое дело, там при создании окна твой диалог добавляется дочерним в QMdiSubWindow, которое и показывается. При закрытии субокно, видимо, удаляется и грохает твой диалог как дочерний. Как обойти точно не знаю, попробуй поискать в QMdiArea параметр в стиле "удалять дочерние окна при их закрытии true/false", либо поиграться с флагами при создании субокна (чтобы снять DeleteOnClose)

ПС: а зачем диалоги ставить на mdiArea , а не виджеты ? диалоги они ж вроде для модального использования придуманы, там mdiArea не при чем, просто exec() и висят поверх всего окна.


Название: Re: MDI как сделать, чтоб дочернее окошко не уничтожалось
Отправлено: Wachburn от Март 25, 2010, 13:30
ну с QMdiArea другое дело, там при создании окна твой диалог добавляется дочерним в QMdiSubWindow, которое и показывается. При закрытии субокно, видимо, удаляется и грохает твой диалог как дочерний. Как обойти точно не знаю, попробуй поискать в QMdiArea параметр в стиле "удалять дочерние окна при их закрытии true/false", либо поиграться с флагами при создании субокна (чтобы снять DeleteOnClose)

ПС: а зачем диалоги ставить на mdiArea , а не виджеты ? диалоги они ж вроде для модального использования придуманы, там mdiArea не при чем, просто exec() и висят поверх всего окна.

спасибо, после решения иконок, думаю сохранять их уже и не стоит... диплом делаю, будут придираться к каждой мелочи....

да я сначала не планировал MDI делать, реализовал все дочерние от QDialog, потом посмотрел что основная форма пустая, вот и решил сделать MDI...  так как в дипломе основное требование кросплатформенность, то выбрал Qt, а раньше с ним дело не имел, вот и проблемы...  в принципе работает нормально и на диалогах, менять уже ленюсь. Спасибо за помощь!