在 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 中更改时如何获取项目的先前名称的主要内容,如果未能解决你的问题,请参考以下文章