【发布时间】:2013-12-26 12:04:17
【问题描述】:
我是模型视图的新手,我一直在关注this tutorial,同时检查文档,我偶然发现了这个小细节:可以下载的教程代码here 在 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
我意识到即使 color.isValid() 函数返回 False,视图仍然会更新。我误解了 setData 方法中的返回角色还是一个错误?
作为参考,我使用的是 PySide 1.2.1,而不是 PyQt4。
【问题讨论】:
标签: python qt qtgui qabstractitemmodel qabstractlistmodel