【问题标题】:Qt: Is it possible to use QStandardItemModel.takeRow() to remove nested rows?Qt:是否可以使用 QStandardItemModel.takeRow() 删除嵌套行?
【发布时间】:2015-05-02 21:24:10
【问题描述】:

我的目标是从与QTreeView 一起显示的QStandardItemModel 中取出一行。

我希望通过takeRow() 做到这一点。 The documentation 这个方法说:

list-of-QStandardItem QStandardItemModel.takeRow (self, int row)

The list-of-QStandardItem result

删除给定的行而不删除行项,并返回一个 指向已删除项目的指针列表。模型释放所有权 这几项。对于该行中尚未设置的项目, 列表中对应的指针将为 0。

它没有 parent 参数,需要指定树中的行位置,并且似乎只带走顶级行。有没有办法使用takeRow() 来获取顶层行的子/孙?比如下面的02行可以用吗?

|--row 0
|  |--row 00
|  |--row 01
|  |--row 02
|--row 1
|--row 2

使用 model.takeRow(2) 之类的东西只会删除第 2 行。

【问题讨论】:

    标签: qt pyqt pyside


    【解决方案1】:

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

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

    item.takeRow(r)
    

    【讨论】:

      猜你喜欢
      • 2016-09-21
      • 1970-01-01
      • 1970-01-01
      • 2012-01-26
      • 2013-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多