2013-04-09 54 views
0

時重新實現化QAbstractItemModel ::使用setData(常量QModelIndex &指數,常量的QVariant &價值,詮釋角色= Qt的:: EditRole) 作爲我們想忽略的角色,是什麼我們應該怎麼做? 返回false或返回true?或其他? Qt文檔中化QAbstractItemModel ::使用setData()的返回值

例子甚至自相矛盾 這裏的返回值爲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

回答

0

,如果你認爲是設置錯誤,您可以返回false這個角色的數據,你想避免這種情況。

如果您想要忽略此數據角色,但您嘗試(但您應該打印警告)並不重要,則可以返回true。以這種方式,你不會「破壞」setData()行爲(false:有錯誤,true:沒關係,你可以繼續)。

你不應該返回任何東西來避免奇怪的行爲,因爲用戶將等待布爾值。例如,如果你測試,應該是一個布爾返回值:

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

條()將即使使用setData()調用沒有返回true。