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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Вопрос по удалению объектов  (Прочитано 2987 раз)
catprog
Гость
« : Май 13, 2009, 22:56 »

А конкретно по вот этому уроку:
http://doc.crossplatform.ru/qt/4.4.3/tutorials-tutorial-t5.html

Все ли объекты
QPushButton *quit = new QPushButton(tr("Quit"));
QLCDNumber *lcd = new QLCDNumber(2);
QSlider *slider = new QSlider(Qt::Horizontal);
удаляются в конце программы? или мне их надо удалять?


ЗЫ: Я это к тому спрашиваю, что когда запустить их много и закрыть, то размер занятой памяти больше чем до их запуска, а еще когда крутил этот пример у меня вылетал фаервол с ошибкой, правда это наверно тогда я накрутил.
« Последнее редактирование: Май 13, 2009, 23:09 от catprog » Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #1 : Май 13, 2009, 23:07 »

В конце программы удаляются ВСЕ объекты. За это отвечает операционная система - такая уж у нее задача выделять память программам и забирать то, что выделила. Т.н. "утечки памяти" страшны во время работы программы.
А вообще, у данных виджетов нет родителей, посему их нужно удалить, в смысле - до конца программы об их удалении никто не позаботится. В конце, как уже сказано выше, всё очистит ось.
« Последнее редактирование: Май 13, 2009, 23:09 от Авварон » Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #2 : Май 13, 2009, 23:40 »

2 catprog, тебе ничего удалять не надо, см. код дальше
Код
C++ (Qt)
    QVBoxLayout *layout = new QVBoxLayout;
    layout->addWidget(quit);
    layout->addWidget(lcd);
    layout->addWidget(slider);
    setLayout(layout);
Эти объекты помещаются в компановщик (layout), а он, в свою очередь устанавливается для текущего объекта setLayout(layout), что делает текущий (MyWidget) объект родителем всех объектов находящихся в его компановщике.
И при уничтожении MyWidget он удалит всех своих детей
Записан

Юра.
catprog
Гость
« Ответ #3 : Май 14, 2009, 00:04 »

Ясно, спасибо.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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