Russian Qt Forum
Ноябрь 25, 2024, 02:00
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Пользовательский интерфейс (GUI)
>
MDI как сделать, чтоб дочернее окошко не уничтожалось
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: MDI как сделать, чтоб дочернее окошко не уничтожалось (Прочитано 3997 раз)
Wachburn
Гость
MDI как сделать, чтоб дочернее окошко не уничтожалось
«
:
Март 24, 2010, 13:37 »
Есть главное окно, в нем вызываются виджеты, порожденные от QDialog, как сделать, чтоб при закрытии этих виджетов они не удалялись а просто скрывались... т.е. чтоб при каждом вызове этих окошек не нужно было заново их создавать командой new
«
Последнее редактирование: Март 24, 2010, 13:51 от Wachburn
»
Записан
crossly
Гость
Re: MDI как сделать, чтоб дочернее окошко не уничтожалось
«
Ответ #1 :
Март 24, 2010, 14:52 »
переопределить у них closeEvent.... и вписать туда hide();
Записан
Wachburn
Гость
Re: MDI как сделать, чтоб дочернее окошко не уничтожалось
«
Ответ #2 :
Март 24, 2010, 19:56 »
Цитата: crossly от Март 24, 2010, 14:52
переопределить у них closeEvent.... и вписать туда hide();
Пробовал, чегото не получалось
Записан
voronElf
Гость
Re: MDI как сделать, чтоб дочернее окошко не уничтожалось
«
Ответ #3 :
Март 25, 2010, 09:10 »
насколько помню, чтобы виджет удалился при закрытии, ему специально нужно выставлять аттрибут WA_Delete_On_Close (как то так пишется). По умолчанию он не удаляется сам. Удалится может если: сами удаляете из кучи (delete), удаляется со стека (локальный объект в функции был) либо при удалении родителя. Что-то из этого происходит ...
Записан
Wachburn
Гость
Re: MDI как сделать, чтоб дочернее окошко не уничтожалось
«
Ответ #4 :
Март 25, 2010, 11:47 »
Цитата: voronElf от Март 25, 2010, 09:10
насколько помню, чтобы виджет удалился при закрытии, ему специально нужно выставлять аттрибут WA_Delete_On_Close (как то так пишется). По умолчанию он не удаляется сам. Удалится может если: сами удаляете из кучи (delete), удаляется со стека (локальный объект в функции был) либо при удалении родителя. Что-то из этого происходит ...
Если виджет(окошко) не добавлять в QMdiArea, то окно не удаляется, но если добавить, то почемуто удаляется... это какаято заморочка с QMdiArea... вот мне и интересно, что это за заморочка такая и как это обойти
Записан
voronElf
Гость
Re: MDI как сделать, чтоб дочернее окошко не уничтожалось
«
Ответ #5 :
Март 25, 2010, 12:53 »
ну с QMdiArea другое дело, там при создании окна твой диалог добавляется дочерним в QMdiSubWindow, которое и показывается. При закрытии субокно, видимо, удаляется и грохает твой диалог как дочерний. Как обойти точно не знаю, попробуй поискать в QMdiArea параметр в стиле "удалять дочерние окна при их закрытии true/false", либо поиграться с флагами при создании субокна (чтобы снять DeleteOnClose)
ПС: а зачем диалоги ставить на mdiArea , а не виджеты ? диалоги они ж вроде для модального использования придуманы, там mdiArea не при чем, просто exec() и висят поверх всего окна.
Записан
Wachburn
Гость
Re: MDI как сделать, чтоб дочернее окошко не уничтожалось
«
Ответ #6 :
Март 25, 2010, 13:30 »
Цитата: voronElf от Март 25, 2010, 12:53
ну с QMdiArea другое дело, там при создании окна твой диалог добавляется дочерним в QMdiSubWindow, которое и показывается. При закрытии субокно, видимо, удаляется и грохает твой диалог как дочерний. Как обойти точно не знаю, попробуй поискать в QMdiArea параметр в стиле "удалять дочерние окна при их закрытии true/false", либо поиграться с флагами при создании субокна (чтобы снять DeleteOnClose)
ПС: а зачем диалоги ставить на mdiArea , а не виджеты ? диалоги они ж вроде для модального использования придуманы, там mdiArea не при чем, просто exec() и висят поверх всего окна.
спасибо, после решения иконок, думаю сохранять их уже и не стоит... диплом делаю, будут придираться к каждой мелочи....
да я сначала не планировал MDI делать, реализовал все дочерние от QDialog, потом посмотрел что основная форма пустая, вот и решил сделать MDI... так как в дипломе основное требование кросплатформенность, то выбрал Qt, а раньше с ним дело не имел, вот и проблемы... в принципе работает нормально и на диалогах, менять уже ленюсь. Спасибо за помощь!
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...