当重新实现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 回答
如果您认为为此角色设置数据是错误的,并且您希望避免这种情况,则可以返回false .
如果要忽略此数据角色,则可以返回true,但尝试(但是应该打印警告)并不重要 .
这样,你就不会“破坏”setData()行为(false:有错误,是的:没关系,你可以继续) .
你不应该返回任何其他东西以避免奇怪的行为,因为用户将等待一个布尔值 . 例如,如果您测试应该是布尔值的返回值:
即使setData()没有返回True,也会调用bar() .