10

如果顶级项目中没有子节点,我正在尝试删除顶级树小部件项目。这样做的正确方法是什么?我似乎在 Qt 的文档中找不到 API 调用。仅在顶级树小部件项目上调用 delete 是否安全?我还没有遇到任何问题,但我想知道这是否安全。非常感谢。

if(topLevelTreeWidgetItem->childCount() > 1) {
  topLevelTreeWidgetItem->removeChild(childItem);
}
else
{
  delete topLevelTreeWidgetItem;
}
4

3 回答 3

18

delete直接使用 QTreeWidgetItem 是非常安全的。

根据~QTreeWidgetItem()的文档:

销毁此树小部件项目。该项目将从已添加的 QTreeWidgets 中删除。这样可以安全地随时删除项目。

delete在实践中使用过很多 QTreeWidgetItems 并且效果很好。

于 2012-02-22T16:48:03.187 回答
5

要删除顶级项目调用QTreeWidget::takeTopLevelItem方法,然后删除返回的项目:

delete treeWidget->takeTopLevelItem(index);

其中 index 是要删除的项目的索引。

于 2012-02-22T09:41:15.683 回答
2

函数 takeChild 仅适用于 QTreeWidgetItem。使用 QtreeWidget,您可以使用QtreeWidget::takeTopLevelItem(int index)

于 2014-05-06T12:19:18.083 回答