Название: 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, а раньше с ним дело не имел, вот и проблемы... в принципе работает нормально и на диалогах, менять уже ленюсь. Спасибо за помощь! |