如果顶级项目中没有子节点,我正在尝试删除顶级树窗口小部件项目。这样做的正确方法是什么?我似乎无法在Qt的文档中找到API调用。在顶级树窗口小部件项目上调用delete是否安全?我还没有遇到任何问题,但我想知道这是否安全。非常感谢。
if(topLevelTreeWidgetItem->childCount() > 1) {
topLevelTreeWidgetItem->removeChild(childItem);
}
else
{
delete topLevelTreeWidgetItem;
}
答案 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)