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"} 
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值