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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: MDI как сделать, чтоб дочернее окошко не уничтожалось  (Прочитано 3962 раз)
Wachburn
Гость
« : Март 24, 2010, 13:37 »

Есть главное окно, в нем вызываются виджеты, порожденные от QDialog, как сделать, чтоб при закрытии этих виджетов они не удалялись а просто скрывались... т.е. чтоб при каждом вызове этих окошек не нужно было заново их создавать командой new
« Последнее редактирование: Март 24, 2010, 13:51 от Wachburn » Записан
crossly
Гость
« Ответ #1 : Март 24, 2010, 14:52 »

переопределить у них closeEvent.... и вписать туда hide();
Записан
Wachburn
Гость
« Ответ #2 : Март 24, 2010, 19:56 »

переопределить у них closeEvent.... и вписать туда hide();

Пробовал, чегото не получалось
Записан
voronElf
Гость
« Ответ #3 : Март 25, 2010, 09:10 »

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

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

Если виджет(окошко) не добавлять в QMdiArea, то окно не удаляется, но если добавить, то почемуто удаляется... это какаято заморочка с QMdiArea... вот мне и интересно, что это за заморочка такая и как это обойти
Записан
voronElf
Гость
« Ответ #5 : Март 25, 2010, 12:53 »

ну с QMdiArea другое дело, там при создании окна твой диалог добавляется дочерним в QMdiSubWindow, которое и показывается. При закрытии субокно, видимо, удаляется и грохает твой диалог как дочерний. Как обойти точно не знаю, попробуй поискать в QMdiArea параметр в стиле "удалять дочерние окна при их закрытии true/false", либо поиграться с флагами при создании субокна (чтобы снять DeleteOnClose)

ПС: а зачем диалоги ставить на mdiArea , а не виджеты ? диалоги они ж вроде для модального использования придуманы, там mdiArea не при чем, просто exec() и висят поверх всего окна.
Записан
Wachburn
Гость
« Ответ #6 : Март 25, 2010, 13:30 »

ну с QMdiArea другое дело, там при создании окна твой диалог добавляется дочерним в QMdiSubWindow, которое и показывается. При закрытии субокно, видимо, удаляется и грохает твой диалог как дочерний. Как обойти точно не знаю, попробуй поискать в QMdiArea параметр в стиле "удалять дочерние окна при их закрытии true/false", либо поиграться с флагами при создании субокна (чтобы снять DeleteOnClose)

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

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

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


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