我正在编写一个c++ qt应用程序。在其中一部分中,我正在创建一个QTreeWidget。用户可以在该树中创建和删除条目。因此,当用户创建一个项目时,他将调用一个函数,然后函数本身调用:
QTreeWidgetItem* newItem = new QTreeWidgetItem();当用户稍后决定删除该条目时,他将调用一个函数,该函数本身将调用:
QTreeWidgetItem* curItem = _ui->qTreeWidget->currentItem();
QTreeWidgetItem* parent = curItem->parent();
parent->removeChild(curItem);现在为我抹去的问题是:这个项目所占据的记忆是什么?QT4.7doc对removeChild的说明如下:
void::removeChild( QTreeWidgetItem * )移除由子对象指示的给定项。删除的项目将不会被删除。
那我怎么删除一个孩子呢?
提前谢谢!唐尼
发布于 2011-07-27 12:35:11
怎么样
delete curItem;根据文档,析构函数将从包含它的树中删除项目,所以我认为您甚至不需要事先执行removeChild。
发布于 2011-07-27 12:35:23
您通常只需在正确的时间删除对象,并使用:
delete curItem;删除只是从父节点中移除其链接。
或者把它安排在稍后删除上
curItem->deleteLater();https://stackoverflow.com/questions/6844257
复制相似问题