QAbstractItemModel :: setData()的返回值

时间:2013-04-09 12:02:21

标签: qt pyqt pyside

重新实现时QAbstractItemModel :: setData(const QModelIndex& index,const QVariant& value,int role = Qt :: EditRole) 至于我们想要忽略的角色,我们应该怎么做? 返回false或返回true?还是其他什么?

Qt文档中的示例甚至是自相矛盾的 这里返回值为false http://qt-project.org/doc/qt-4.8/model-view-programming.html#making-the-model-editable 但这里的返回值为true http://qt-project.org/doc/qt-4.8/modelview.html#2-5-the-minimal-editing-example

1 个答案:

答案 0 :(得分:0)

如果您认为为此角色设置数据是错误的,并且您希望避免这种情况,则可以返回false。

如果您想忽略此数据角色,则可以返回true但尝试不是很重要(但是您应该打印警告)。

通过这种方式,你不会“破坏”setData()行为(false:有错误,是的:没关系,你可以继续)。

您不应该返回任何其他内容以避免奇怪的行为,因为用户将等待布尔值。例如,如果您测试应该是布尔值的返回值:

if setData( "test", Qt.DisplayRole) == False:
   foo()
else:
   bar()
即使setData()没有返回True,也会调用

bar()。