如何从QTreeWidget中删除顶级QTreeWidgetItem

How do I delete a top level QTreeWidgetItem from a QTreeWidget?

本文关键字:QTreeWidgetItem 删除 QTreeWidget      更新时间:2023-10-16

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

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

delete直接调用QTreeWidgetItem是完全安全的。

根据~QTreeWidgetItem()的文档:

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

在实践中,我已经在许多QTreeWidgetItems上使用了delete,它运行得很好。

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

delete treeWidget->takeTopLevelItem(index);

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

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