【问题标题】:Delete entire QTreeWidget tree删除整个 QTreeWidget 树
【发布时间】:2015-07-31 19:52:38
【问题描述】:

我在一个使用 QTreeWidget 的 GUI 项目中工作。该程序通过 XML 进行解析并使用 QTreeWidget 创建要显示的树。

我在代码中发现了一个错误,如果用户更改为新的选择,然后回到他们刚刚选择的那个,它会重新解析 XML,但之前创建的树不是首先被摧毁。

新树只是简单地附加到旧树上,然后它现在显示所有内容的副本。如果您继续更改视图并再次返回,它将继续附加到树上 n 次。

我尝试过使用 TreeWidget->clear(),但这看起来只是清除了正在显示的内容,并没有真正删除树本身。

我看到人们谈论使用的例子 删除 topLevelItem() 但我也无法完成这项工作。

有没有人知道从 QTreeWidget 中删除整个树的正确方法?

谢谢。

【问题讨论】:

  • "QObjects 在对象树中组织自己。当您创建一个以另一个对象为父对象的 QObject 时,它被添加到父对象的 children() 列表中,并在父对象存在时被删除。" (qt.io)。你这样方便吗?
  • @Martin:只是 QTreeWidgetItems 不是 QObjects,所以你的报价不适用。
  • 我的意思是,我想强调 Qt 用于删除对象的父/子机制,如果删除 QTreeWidget,所有子对象也会被删除。无论如何,您自己找到了解决方案:)

标签: qt user-interface


【解决方案1】:

在搜索代码一个小时左右后,我发现了问题。 最初的开发人员将解析后的 XML 存储在 QStringList 中,并且该列表从未被清除。

很简单,在函数调用的开头放一个 list.clear()...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-08
    • 1970-01-01
    • 1970-01-01
    • 2011-08-05
    • 2011-06-04
    • 2014-01-27
    • 1970-01-01
    相关资源
    最近更新 更多