如何从QTreeWidget中删除顶级QTreeWidgetItem?

时间:2012-02-22 09:22:11

标签: c++ qt qtreewidget qtreewidgetitem

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

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

3 个答案:

答案 0 :(得分:14)

delete直接使用QTreeWidgetItem非常安全。

根据~QTreeWidgetItem()的文档:

  

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

我在实践中对许多QTreeWidgetItem使用了delete,它运行得很好。

答案 1 :(得分:3)

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

delete treeWidget->takeTopLevelItem(index);

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

答案 2 :(得分:2)

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