QML之Packge

代碼:

ListModel{
     id: delegatemodel
     ListElement{name1:"dog"; name2:"cat"}
     ListElement{name1:"man"; name2:"girl"}
}
ListView{
    model:delegatemodel.parts.list
}
GridView{
    model:delegatemodel.parts.grid
}
DelegateModel{
     id: delegatemodel
     model: listmodel
     delegate: Package{
           Text{text:name1;Package.name:"list"}
           Text{text:name2;Package.name:"grid"}
     }
}


上述代碼用ListView顯示name1的數據,使用GridView顯示name2的數據。

其中的關鍵在於Pakage的定義,使用附屬的屬性Package.name爲兩個Text聲明不同的名字:list, grid。

這樣,ListView和GridView就可以通過DelegateModel.parts進行定位。


在使用過程中,Package實際上是可以被看作Delegate使用的。不過需要注意的是:Package.name爲空或者沒有設置Package.name的最上層控件是不能被顯示的。

例如:

Package{
 Text{text:name1; Package.name:"list"}
 Text{text:name2; Package.name:"grid"}
 Rectangle{
   width:100;height:100
 }
}


上面的Rectangle是無法顯示的。

甚至在Rectangle中設置Package.name:"list",也無法在listView中顯示(只能設置一次,第一次有效)。

除非,將Rectangle的parent設置爲擁有Package.name的控件如:

Package{
 Text{
 text:name1; Package.name:"list"         
Rectangle{
   width:100;height:100
 }
  }
 Text{text:name2; Package.name:"grid"} 
}


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