繼承自QAbstractItemModel公有類,實現樹形列表時,注意不要使得parent函數造成死循環

一般實現樹形model中必須要實現parent函數,目的是爲了獲取上一級節點。而大多數開發者可能會使用判斷父親節點是否有效的方法來確定當前是第幾級,當前需要構建什麼樣的節點。

但是在parent函數中,是不能使用判斷父親節點來構造父親的,因爲會造成系循環,具體看如下例子:

所以,如果在繼承自QAbstractItemModel,並且需要實現樹形列表,同時,又使用了下面函數構建節點的時候,則必須要注意:孩子存儲父親的行列,同時還需要存儲當前的級數,目的是爲了判斷是否是第一級,如果是第一級,則必須返回無效節點,如果無法做判斷,則可能會返回有效的父親節點,這是會報錯的。

QModelIndex QAbstractItemModel::createIndex(int arow, int acolumn, quint32 aid) const
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章