Qt QTreeWidgetItem-在清理旧的孩子后添加孩子

Qt QTreeWidgetItem - adding children after cleaning old ones

本文关键字:孩子 添加 QTreeWidgetItem- Qt      更新时间:2023-10-16

我有一个QTreeWidget,在单击项目的扩展时-当itemExpanded信号发出时,我使用算法构建QList<QTreeWidgetItem*>,并用QTreeWidgetItem::addChildren将其添加到扩展的项目中。

这是有效的,但是,如果我再次折叠和展开它,它会添加更多的子项,所以我会得到重复项。所以我必须先把老孩子们赶走。为此,我使用qDeleteAll(item->takeChildren()),然后用addChildren添加新的。问题是,由于某种原因,它不起作用。它仍然是空的。

有没有什么标准的方法来进行这样的手术?

听起来您真的想将QTreeView与自定义的QAbstractItemModel一起使用。是的,如果你以前从未这样做过,这可能看起来有点可怕,但关键的优势是,在这种方法中,如果需要,视图会询问你项目数据,而不必预先填写。

或者,一定要考虑Michael Boone给出的建议:与其删除所有子项目,然后重新添加,为什么不检查是否已经添加了子项目(如果需要,可以选择更新)?