![]() |
|
|
![]()
|
|
| null56 |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 721 Регистрация: 19.3.2008 Репутация: 6 Всего: 12 |
Сразу скажу, что я лишь начинаю разбираться в qt4
Приведу пример кода методов.... Конструктора
Метода настроек двух кнопок
Метода создающего новое окно
И метода при выходе
Окна, которые были созданы методов newFile, закрываются нормально, но перначально созданное окно, вылетает с ошибкой.... Если убрать setAttribute(Qt::WA_DeleteOnClose);, то все работает, как и задумано... В книжке написано, что объекты не уничтожаются после закрытия, поэтмоу надо указывать этот метод окна.... Вопросы: 1) я правильно понял назначение данного метода? 2) Почему же у меня ошибка.. при том пишет, что указатель, итпа не актуальный.... 3) Нужно ли следить за вновь созданными объектами, чтобы своевременно их почистить? Заранее благодарен за помощь... Добавлено через 4 минуты Нашел ошибку... В основном приложении я создавал статический объект первоначально созданного окна, и qt повторно пытался его удалить... создал динамически и все нормально заработало... Извините за лишнюю тему на форме.... |
||||||||
|
|||||||||
| null56 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 721 Регистрация: 19.3.2008 Репутация: 6 Всего: 12 |
Единственное, что хотел уточнить, действительно ли qt следит за всеми динамически созданными объектами - виджетами? и при необходимости может их удалять при закрытие окна?
|
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Только на базе QObject'a и только, если у объекта есть родитель. По сути это обычное дерево, где корень - главное окно, а контролы на нем - дети. Если удалять родительское окно, то в деструкторе сначала удаляются все дочерние элементы, а они уже по цепочке удаляют своих детей, пока ничего не останется. Если в конструктор объекта не передается указатель на родителя, то объект считается родителем и его удалять надо вручную или поставить флаг, чтобы оно удалялось при событии onClose. |
|||
|
||||
| null56 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 721 Регистрация: 19.3.2008 Репутация: 6 Всего: 12 |
А реализовать это ручками, как будет выглядеть?
Я не совсем правильно выразился.... если мы создаем объект динамически, которого никто удалять не собирается, то мы должны всегда хранить указатель на него, чтобы потом сделать delete этого указателя? Получается так? это единственный способ устранения утечки? Это сообщение отредактировал(а) null56 - 26.11.2008, 16:25 |
|||
|
||||
| Elfebet |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 545 Регистрация: 15.5.2006 Где: Украина. Запорожь е. Репутация: 5 Всего: 14 |
нет, если этот обьект дочерний от QWidget или QObject - то в ручную можна и не удалять пример
пример может быть и корявый, но из слов SABROG - я так понял хм.... да, пример корявый у QPushButton в любом случае будут родители, но суть я думаю ты понял Это сообщение отредактировал(а) Elfebet - 26.11.2008, 17:39 -------------------- Программист не должен всё знать... он должен знать где можно посмотреть |
||||
|
|||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Если родитель в QPushButton не передается в конструктор, то он по-умолчанию 0. Самый первый пример, который все видят при изучении Qt (hello, world): http://doc.trolltech.com/4.4/linguist-hellotr.html Тут класс QPushButton является главным окном. В принципе все-равно какой контрол используется как главное окно, если он на базе QWidget. |
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 7 Всего: 162 |
Метод, создающий новое окно, весьма странен.
Добавлено через 11 секунд Хотя, не факт. |
|||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |