Qt:是否可以使用 QStandardItemModel.takeRow() 删除嵌套行?
Qt: Is it possible to use QStandardItemModel.takeRow() to remove nested rows?
我的目标是从我用 QTreeView
显示的 QStandardItemModel
中取出一行。
我希望用 takeRow()
做到这一点。 The documentation 对于此方法说:
list-of-QStandardItem QStandardItemModel.takeRow (self, int row)
The list-of-QStandardItem result
Removes the given row without deleting the row items, and returns a
list of pointers to the removed items. The model releases ownership of
the items. For items in the row that have not been set, the
corresponding pointers in the list will be 0.
它不带父参数,而父参数是在树中指定行位置所需要的,而且似乎只带走顶级行。有没有办法使用 takeRow()
获取顶级行的 child/grandchild?比如下面02行可以用吗?
|--row 0
| |--row 00
| |--row 01
| |--row 02
|--row 1
|--row 2
使用 model.takeRow(2)
之类的东西只会删除第 2 行。
如果要删除顶级行,则仅在整个模型级别应用 takeRow()
。要删除作为模型中另一项的子项的行,请将 QStandardItem.takeRow()
应用于要删除的行的 父项 (QStandardItem
)。
所以要从父行 QStandardItem
中删除子行 r
称为 item
:
item.takeRow(r)
我的目标是从我用 QTreeView
显示的 QStandardItemModel
中取出一行。
我希望用 takeRow()
做到这一点。 The documentation 对于此方法说:
list-of-QStandardItem QStandardItemModel.takeRow (self, int row) The list-of-QStandardItem result
Removes the given row without deleting the row items, and returns a list of pointers to the removed items. The model releases ownership of the items. For items in the row that have not been set, the corresponding pointers in the list will be 0.
它不带父参数,而父参数是在树中指定行位置所需要的,而且似乎只带走顶级行。有没有办法使用 takeRow()
获取顶级行的 child/grandchild?比如下面02行可以用吗?
|--row 0
| |--row 00
| |--row 01
| |--row 02
|--row 1
|--row 2
使用 model.takeRow(2)
之类的东西只会删除第 2 行。
如果要删除顶级行,则仅在整个模型级别应用 takeRow()
。要删除作为模型中另一项的子项的行,请将 QStandardItem.takeRow()
应用于要删除的行的 父项 (QStandardItem
)。
所以要从父行 QStandardItem
中删除子行 r
称为 item
:
item.takeRow(r)