【发布时间】: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