qt 4.7 removeChild () и память - PullRequest
       11

qt 4.7 removeChild () и память

2 голосов
/ 27 июля 2011

Я пишу приложение на c ++ qt.В одной части я создаю QTreeWidget.Пользователь имеет все возможности для создания и удаления записей в этом дереве.Поэтому, когда пользователь создает элемент, он вызывает функцию, которая затем сама вызывает:

QTreeWidgetItem* newItem = new QTreeWidgetItem();

Когда пользователь позже решает удалить запись, он вызывает функцию, которая затем сама вызовет:

QTreeWidgetItem* curItem = _ui->qTreeWidget->currentItem();
QTreeWidgetItem* parent = curItem->parent();
parent->removeChild(curItem);

Вопрос, который стирается для меня сейчас: как насчет памяти, которую занимал этот предмет?В документации Qt 4.7 к removeChild сказано следующее:

void QTreeWidgetItem :: removeChild (QTreeWidgetItem * child) Удаляет указанный элемент, указанный дочерним элементом.Удаленный элемент не будет удален.

Итак, как мне удалить ребенка?

Заранее большое спасибо!Донни

Ответы [ 2 ]

2 голосов
/ 27 июля 2011

Как насчет

delete curItem;

Согласно документации деструктор удалит элемент из дерева, в которое он включен, поэтому я думаю, вам даже не нужно выполнять removeChild заранее.

1 голос
/ 27 июля 2011

Обычно вы просто удаляете свой объект в нужное время с помощью:

delete curItem;

При удалении просто удаляется его ссылка из родительского.

или, возможно, назначается удаление позже :

curItem->deleteLater();
...