2

我正在编写一个 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) 移除由 child 指示的给定项目。被移除的项目不会被删除。

那么如何删除一个孩子呢?

提前非常感谢!唐尼

4

2 回答 2

2

怎么样

delete curItem;

?

根据文档,析构函数将从包含它的树中删除该项目,所以我认为您甚至不需要removeChild事先执行。

于 2011-07-27T12:35:11.833 回答
1

您通常只需在正确的时间删除您的对象:

delete curItem;

删除只是从父级中删除其链接。

或者也许安排它稍后删除

curItem->deleteLater();
于 2011-07-27T12:35:23.587 回答