我是模型视图的新手,我在查看文档的同时一直在关注本教程,我偶然发现了这个小细节:可以在此处下载的教程代码在 QAbstractItemModel 类(此处为 QAbstractListModel)中setData 方法的代码是:
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
根据教程中的解释以及我从文档中了解的内容,如果函数返回 True,则更新视图,如果返回 false,则没有任何反应,但是当我将代码更改为:
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
我意识到即使函数返回 False,如果 color.isValid() 视图仍然会更新。我误解了 setData 方法中的返回角色还是一个错误?
作为参考,我使用的是 PySide 1.2.1,而不是 PyQt4。