Qt:是否可以使用QStandardItemModel.takeRow()来删除嵌套行?

时间:2015-02-19 03:44:00

标签: qt pyqt pyside

我的目标是从我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行。

1 个答案:

答案 0 :(得分:3)

如果要删除顶级行,请仅在整个模型级别应用takeRow()。要删除作为模型中其他项的子项的行,请将QStandardItem.takeRow()应用于要删除的行的父项(QStandardItem)。

所以要从名为r的父QStandardItem中删除子行item

item.takeRow(r)