【问题标题】:How do I delete a top level QTreeWidgetItem from a QTreeWidget?如何从 QTreeWidget 中删除顶级 QTreeWidgetItem?
【发布时间】:2012-02-22 09:22:10
【问题描述】:

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

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

【问题讨论】:

    标签: c++ qt qtreewidget qtreewidgetitem


    【解决方案1】:

    delete直接使用 QTreeWidgetItem 是绝对安全的。

    根据~QTreeWidgetItem()的文档:

    销毁此树小部件项目。该项目将从 已将其添加到的 QTreeWidgets。这样可以安全删除 一个项目。

    我在很多 QTreeWidgetItems 上都使用过delete,效果很好。

    【讨论】:

    • 感谢您的确认。我在我的 QTreeWidget QTreeWidgetItem 指针中创建了我的顶级项目,以便在我的代码中引用它们。使它们成为指针可以很容易地删除它们并在需要时重新初始化它们。
    【解决方案2】:

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

    delete treeWidget->takeTopLevelItem(index);
    

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-01-12
        • 2012-10-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-15
        • 1970-01-01
        • 2023-04-05
        相关资源
        最近更新 更多