在 PySide 的 QTreeView 中更改时如何获取项目的先前名称

Posted

技术标签:

【中文标题】在 PySide 的 QTreeView 中更改时如何获取项目的先前名称【英文标题】:How to get previous name for an item when changed in a QTreeView in PySide 【发布时间】:2013-12-20 18:51:49 【问题描述】:

我正在 Maya 2014 中创建一个 UI 来管理变换的自定义属性。到目前为止,我已经成功生成了转换,UI 将生成模型中的项目(使用 QStandardItemModel),最后用 QTreeView 显示它。

但是,当我或用户更改 QTreeView 中项目的名称时,我想获取以前的名称和建议的新名称,以便我可以更新自定义属性和转换名称。

我在 Google 上进行了搜索,但找不到任何返回模型/视图的先前名称和新名称的内容,但我记得使用 QTreeWidget 找到了一些东西。我能找到的最接近的东西是 QAbstractItemDelegate,但它看起来不能提供以前的名称值。

我唯一能想到的就是与 QModelIndex 有关,但无论哪种方式我都很难过。

谢谢!

【问题讨论】:

【参考方案1】:

重新实现模型的setData方法,在编辑时获取新旧值:

class TreeModel(QtGui.QStandardItemModel):
    def setData(self, index, value, role):
        if role == QtCore.Qt.EditRole:
            print 'old:', self.itemFromIndex(index).text()
            print 'new:', value
        return QtGui.QStandardItemModel.setData(self, index, value, role)

【讨论】:

以上是关于在 PySide 的 QTreeView 中更改时如何获取项目的先前名称的主要内容,如果未能解决你的问题,请参考以下文章

带有自定义项的 QTreeView

QTreeView:如何中止选择更改

自定义 QTreeView 项目

排序 QTreeView 的最简单方法

如何保存 PySide 树视图模型结构

使用 Pyside 的 Qt 树视图