我的目标是从我QStandardItemModel
显示的QTreeView
中抽出一行。
我希望用takeRow()
做到这一点。这个方法的The documentation说:
list-of-QStandardItem QStandardItemModel.takeRow (self, int row) The list-of-QStandardItem result
删除给定的行而不删除行项,并返回一个 已删除项目的指针列表。该模型释放了所有权 这几项。对于尚未设置的行中的项目, 列表中的相应指针将为0。
它不需要父参数,这是在树中指定行位置所需的,并且似乎只取走顶级行。有没有办法使用takeRow()
来获取顶级行的子/孙?例如,它可以用于下面的第02行吗?
|--row 0
| |--row 00
| |--row 01
| |--row 02
|--row 1
|--row 2
使用model.takeRow(2)
之类的内容只会删除第2行。
答案 0 :(得分:3)
如果要删除顶级行,请仅在整个模型级别应用takeRow()
。要删除作为模型中其他项的子项的行,请将QStandardItem.takeRow()
应用于要删除的行的QStandardItem
)。
所以要从名为r
的父QStandardItem
中删除子行item
:
item.takeRow(r)