Datachanged signal does not work
-
Hello!
I have problem with dataChanged signal.In my class, inherited from QAbstractItemModel, I have following functions:
@def columnCount(self, parent):
return 1def data(self, index, role):
if index.isValid():
node = self.nodeForIndex(index)
if role == QtCore.Qt.DisplayRole:
return node.nodeData[index.column()]
if role == QtCore.Qt.DecorationRole:
return node.icon
if role == QtCore.Qt.EditRole:
return node.name
if role == QtCore.Qt.ToolTipRole:
return node.namedef flags(self, index):
return QtCore.Qt.ItemIsEnabled |
QtCore.Qt.ItemIsSelectable |
QtCore.Qt.ItemIsDragEnabled |
QtCore.Qt.ItemIsDropEnabled |
QtCore.Qt.ItemIsEditabledef headerData(self, section, orientation, role):
if orientation == QtCore.Qt.Horizontal and
role == QtCore.Qt.DisplayRole:
return self.rootNode.data(section)
else:
return Nonedef index(self, row, column, parent):
if not parent.isValid():
parentNode = self.rootNode
else:
parentNode = parent.internalPointer()#childNode = parentNode.childAt(row) if parentNode.childAt(row): return self.createIndex(row, column, parentNode.childAt(row)) else: return QtCore.QModelIndex()
def nodeForIndex(self, index):
if index.isValid():
node = index.internalPointer()
return node
return self.rootNodedef parent(self, index):
if not index.isValid():
return QtCore.QModelIndex()childNode = index.internalPointer() parentNode = childNode.parent if not childNode or not parentNode: return QtCore.QModelIndex() if parentNode == self.rootNode: return QtCore.QModelIndex() return self.createIndex(parentNode.getRow(), 0, parentNode)
def setData(self, index, value, role):
node = self.nodeForIndex(index)
if role == QtCore.Qt.EditRole:
node.changeName(value)
self.dataChanged.emit(index, index)
return True@In func setData signal dataChanged.emit() just don't work. I tried to catch it myself, signal emited right and indexe is valid. But my views are not updated. What's wrong?