Qt: metoda setData w QAbstractItemModel
Jestem nowy w modelowaniu widoku i obserwujęten samouczek jednocześnie sprawdzając dokumentację i natknąłem się na ten mały szczegół: kod samouczka, który można pobraćtutaj ma w klasie QAbstractItemModel (tutaj QAbstractListModel) metodę setData, której kodem jest:
def setData(self, index, value, role = QtCore.Qt.EditRole):
if role == QtCore.Qt.EditRole:
row = index.row()
color = QtGui.QColor(value)
if color.isValid():
self.__colors[row] = color
self.dataChanged.emit(index, index)
return True
return False
Zgodnie z wyjaśnieniami w tutorialu iz tego, co zrozumiałem z dokumentacji, jeśli funkcja zwraca True, to widok jest aktualizowany, jeśli zwraca fałsz, nic się nie dzieje, ale gdy zmieniłem kod na:
def setData(self, index, value, role = QtCore.Qt.EditRole):
if role == QtCore.Qt.EditRole:
row = index.row()
color = QtGui.QColor(value)
if color.isValid():
self.__colors[row] = color
self.dataChanged.emit(index, index)
return False # This is what I changed in the code
return False
Zdałem sobie sprawę, że widok nadal jest aktualizowany, jeśli color.isValid () nawet jeśli funkcja zwróci False. Czy nie rozumiem roli powrotu w metodzie setData, czy jest to błąd?
Dla odniesienia używam PySide 1.2.1, a nie PyQt4.