首页 文章

QAbstractItemModel :: setData()的返回值

提问于
浏览
0

当重新实现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

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

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

    这样,你就不会“破坏”setData()行为(false:有错误,是的:没关系,你可以继续) .

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

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

    即使setData()没有返回True,也会调用bar() .

相关问题