Как происходит очищение памяти из под объектов Qt?

178
14 февраля 2019, 22:10

Допустим, я создал указатель на класс Кнопки внутри другого класса Окна, потом выделил под нее память. Как мне высвободить память потом из под кнопки? Переопределить метод класса закрытия Окна и там высвободить? Или указать родителем Окно через this и она автоматически высвободится? + еще как высвобождать память из под контейнеров? Буду очень признателен за хорошее объяснение)

Answer 1

Достаточно указать родителем кнопки окно или другой объект, который наследник QObject и он удаляется когда нужно. Для контейнеров можно умные указатели применить.

Answer 2

Вот такой код вполне будет работать.

lastWindow = new QDialog();
textLayout = new QVBoxLayout(lastWindow);
textEdit = new QTextEdit(lastWindow);

Только не забудьте удалить верхний экземпляр класса

delete lastWindow;

Т.к. у textLayout и textEdit указан родителем lastWindow, то при его удалении будут удалены также и они. Кроме того не забудьте о присвоении layout при процедурном создании формы. Должно получится както так.

lastWindow = new QDialog();
textLayout = new QVBoxLayout(lastWindow);
lastWindow->setLayout(textLayout);
textEdit = new QTextEdit(lastWindow);
textLayout->addItem(textEdit);
READ ALSO
thread Что происходит при join?

thread Что происходит при join?

Вот такая программа есть соответственно поток после join не выполняется

188
C++, симметричное шифрование [закрыт]

C++, симметричное шифрование [закрыт]

Хочу написать шифратор для файлов, интересуют симметричные шифрования, кроме xorЖелательно с ссылками на примеры

197
Создание очереди в с++

Создание очереди в с++

Помогите пожалуйста, я только начал изучать с++ и не совсем понимаю, как сделать эту задачуПонятного материала для меня я не нашел(( Прошу не бросаться...

175
Segmentation fault при добавлении объекта в unordered_map

Segmentation fault при добавлении объекта в unordered_map

Столкнулся с такой проблемой, мне необходимо записать абстрактный класс в unordered_map для дальнейшего использованияОднако, при попытке это сделать...

174