Как получить предыдущее имя элемента при изменении в QTreeView в PySide

Я создаю пользовательский интерфейс в Maya 2014 для управления пользовательскими атрибутами преобразований. До сих пор у меня были успешно сгенерированы преобразования, пользовательский интерфейс будет генерировать элементы в модели (используя QStandardItemModel) и, наконец, отображать их с помощью QTreeView.

Однако, когда я или пользователь изменяют имя элемента в QTreeView, я хотел бы получить предыдущее имя и предложенное новое имя, чтобы я мог обновить пользовательские атрибуты и имя преобразования.

Я искал по всему Google и не смог найти ничего, что бы возвращало предыдущее и новое имя для модели/представления, но я помню, что нашел что-то с помощью QTreeWidget. Самое близкое, что я смог найти, это QAbstractItemDelegate, но не похоже, что он может предоставить предыдущее значение имени.

Единственное, что я могу придумать, что мне не хватает, это что-то делать с QModelIndex, но в любом случае я в тупике.

Спасибо!


person ScottWilson    schedule 20.12.2013    source источник


Ответы (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)
person ekhumoro    schedule 20.12.2013