删除 QTreeView 中项目的所有子元素
Posted
技术标签:
【中文标题】删除 QTreeView 中项目的所有子元素【英文标题】:Remove all sub-elements of an item in QTreeView 【发布时间】:2016-04-12 09:57:26 【问题描述】:我有一个带有元素 baseItem 的 QTreeView,它本身包含一些子项:
baseItem
- child1
- child2
- child3
现在我想删除该项目的所有子项,但不删除该项目本身。我目前的做法是打电话
if (baseItem->hasChildren())
baseItem->removeRows(rowCnt,baseItem->rowCount());
...其中 rowCnt 是 baseItem 所在的行索引号。不幸的是,这仅在 baseItem 位于 rowCnt=0 时才有效。这里有什么问题?我还应该如何删除 baseItem 的所有子项?
谢谢!
【问题讨论】:
How to remove all rows and child rows from QTreeview的可能重复 Alexis P.: 不,这个线程描述了如何清除整个树,我想要做的是只删除树中特定元素的子元素,而这个元素和所有其他元素都还活着 baseItem->parent()->removeRows(baseItem->row(),baseItem->rowCount());工作?无法测试... 【参考方案1】:...其中 rowCnt 是 baseItem 所在的行索引号。
不,rowCnt 是父级下的子树中的索引。 所以:
if (baseItem->hasChildren())
baseItem->removeRows(0,baseItem->rowCount());
【讨论】:
以上是关于删除 QTreeView 中项目的所有子元素的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 QAbstractItemModel 从 QTreeView 中删除行?
QTreeView、QTableView、不同层次层的显示项
重新实现 QStyledItemDelegate::paint - 如何获取子元素坐标?