|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
26.08.2013, 14:35 | #1 |
Студент
Пользователь
Регистрация: 13.11.2009
Сообщений: 65
|
Создание экземпляра окна.
Добрый день.
Вопрос простой. Не могу найти на него ответа. В программе есть главное окно, есть несколько дочерних окошек. Каким способом их лучше всего создавать, что бы без утечек памяти и что бы при закрытии главного окна корректно закрывались дочерние? Пока, вижу несколько способов. newWindow = new NewWindow; newWindow->show(); Тут утечка памяти. Избежать этого можно, только если окно создать один раз, а потом показывать/скрывать. Но мне желательно, что бы экземпляр создавался каждый раз. Второй вариант, если окно диалоговое, но у меня не все окна диалоговые. NewWindow newWindow; newWindow.exec(); Третий вариант. Нечто вроде такого. newWindow = 0; .... if (newWindow != 0) delete newWindow; Этот метод мне кажется костылем. Еще есть вариант перехватывать событие закрытия окна, удалять его и обнулять указатель, а потом: if (!newWindow) newWindow = new NewWindow; Но загромождать код обработчиками событий не хотелось бы. Еще читал про автоматическое удаление окна при закрытии, задаваемое флагом. Но при удалении не обнуляется указатель и я не могу знать, удалилось окно, или нет. Скорее всего придется отлавливать сигнал о закрытии окна (. Может быть есть другие предложения, уверен в Qt подумали об этом и есть какая то общепринятая форма записи открытия нового окна (окно открывается из главной менюшки)? |
26.08.2013, 18:05 | #2 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,323
|
Когда вы создаёте диалоговое окно с помощью new, то его не нужно освобождать. Там всё продумано. Не могу найти где я об этом читал...
|
27.08.2013, 10:20 | #3 |
Студент
Пользователь
Регистрация: 13.11.2009
Сообщений: 65
|
Да. Есть такая штука. Типа:
Код:
Создаю при помощи new. И указываю окошку, что оно модальное. Другое окно должно создаваться только один раз. Я его создаю в конструкторе главного окна. А потом только делаю Код:
Проблема решена. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Создание экземпляра класса по имени | Lasor | Общие вопросы C/C++ | 24 | 17.12.2012 22:28 |
Создание экземпляра класса | biohazard120 | Общие вопросы Delphi | 11 | 15.09.2012 13:23 |
Создание окна | Stas96 | Win Api | 1 | 29.10.2010 21:58 |
Создание экземпляра компонента | mar4elo | Общие вопросы C/C++ | 2 | 14.05.2010 05:40 |
про классы окон, и дополнительное место для экземпляра окна | Пепел Феникса | Win Api | 2 | 22.04.2010 15:48 |