QML之DelegateModel和DelegateModelGroup

文檔上說:

DelegateModel用於封裝model和delegate

使用情況:

  • 當model爲QAbstractItemModel的子類,獲取和操作modelIndex
  • 和Package一起使用,提供multiple views。
  • 和DelegateModelGroup一起使用,爲delegate item 提供排序和過濾

DelegateModelGroup提供了訪問DelegateModel的delegate items的方法,同時能夠排序和過濾這些items

DelegateModel中的items初始條件下fangzaiDelegateModel::items這個組中(這個組一般直接反映DelegateModel::model中的數據)。items中的items可以被改變,方法是將DelegateModel::filterOnGroup設置爲DelegateModel::groups中的一個。

DelegateModelGroup中的數據可以通過get方法得到,返回的object包含組成員和序號信息,以及model data。move方法可於排序,remove可用於過濾。setGroups和Package delegates用於將數據分類到不同的view中

insert方法可爲model增加數據項,一般用在先提供模擬數據項或者佔位數據項(然後當數據available時使用resolved添加爲正真數據)



注意,VisualDataGroup和DelegateModelGroup是等價的(兼容)

            VisualDataModel和DelegateModel也是兼容的。


如何理解DelegateModel和DelegateModelGroup?

DelegateModel中有一個默認的DelegateModelGroup,名字爲items。

用戶可以通過DelegateModel::groups添加新的DelegateModelGroup

DelegateModel::model中所有的數據項必須屬於其中一組(默認屬於items組)

改變數據項所屬組:

通過DelegateModelGroup::get()方法取出,然後設置item.groups爲指定組名

或者使用DelegateModelGroup::setGroups將本組所有數據項轉移到其他組

或者使用DelegateModelGroup::removeGroups將本組所有數據刪除(應該和setGroups一樣的效果)

組內數據項發生變動時,可通過onChange進行捕獲

delegate顯示的內容:

默認顯示的內容是name爲items的DelegateModelGroup的數據

可通過設置filterOnGroup,改變當前delegate顯示內容

結合Package使用:

定義Package,將其中的控件使用Package.name進行命名,從而實現分組。

最後通過指定 delegatemodelid.part.xxx到model,實現顯示一部分數據。

參考:Package


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章