1

当重新实现 QAbstractItemModel::setData ( const QModelIndex & index, const QVariant & value, int role = Qt::EditRole ) 时,对于我们想要忽略的角色,我们应该怎么做?return false or return true ?还是别的什么?

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

4

1 回答 1

1

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

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

这样,您就不会“破坏” setData() 行为(false:有问题,true:没关系,您可以继续)。

你不应该返回任何东西来避免奇怪的行为,因为用户会等待一个布尔值。例如,如果您测试应该是布尔值的返回值:

if setData( "test", Qt.DisplayRole) == False:
   foo()
else:
   bar()

即使 setData() 不返回 True,也会调用 bar()。

于 2013-04-09T12:57:28.407 回答