找回密码
 立即注册
收起左侧

QML下的PathView和ObjectModel组合,数据如何绑定?

0
回复
4465
查看
[复制链接]
累计签到:3 天
连续签到:2 天
来源: 2018-12-22 20:56:03 显示全部楼层 |阅读模式
1Qter豆
本帖最后由 kyleyan 于 2018-12-22 21:03 编辑

PathView和ObjectModel组合,这种情况下,没有deletage的功能,现在面临的问题是如何将Path的参数传递到新建的ObjectModel中的控件中?

简单说一下需求:有10个页面模板,显示10种不同风格的页面,通过ObjectModel将不同的页面添加到PathView中去,进行展示。
也就是说10个页面的模板将根据需求,动态添加到ObjectModel中。10种页面的每一种都有可能在ObjectModel中有多个,因此只能通过动态加载的方式,添加到ObjectModel中。

现在遇到的问题:PathView有Path的路径参数,路径参数包括透明度,缩放等参数。如下所示:

path:Path{                   id:menuPath                   startX: 0                  
startY: menuPathView.height/2
PathAttribute{name:"menuZ";value: 0}                  
PathAttribute{name:"menuAlpha";value: 0.6}                  
PathAttribute{name:"menuScale";value: 0.6}         
PathLine{x:menuPathView.width/2;y:menuPathView.height/2}
PathAttribute{name:"menuZ";value: 100}                  
PathAttribute{name:"menuAlpha";value: 1}                  
PathAttribute{name:"menuScale";value: 1.0}
PathLine{x:menuPathView.width;y:menuPathView.height/2}                  
PathAttribute{name:"menuZ";value: 0}                  
PathAttribute{name:"menuAlpha";value:0.6}                  
PathAttribute{name:"menuScale";value: 0.6}                  
PathPercent{value:1.0}               
}以缩放参数为例,在deletage中绑定代码如下:
delegate:Item {         
id: menuDelegate      
scale:PathView.menuScale
}但是,PathView和ObjectModel组合,是没有deletage的。可以动过静态添加:
model:ObjectModel{   
id:menuModel   
PageType1{scale:PathView.menuScale}
}可是,现在需要动态添加,因此用下面的方式进行添加:
Component.onCompleted: {     
var component = Qt.createComponent("ageType1.qml")     
if(component.status === Component.Ready){        
menuModel.append(component.createObject(parent,{color:"yellow"}));     
}
上述中,menuModel.append(component.createObject(parent,{color:"yellow"}));只是将参数传递了过去,并没有实现绑定作用。
因为用color:"yellow"可以传递过去颜色,改用scale:PathView.menuScale  并没有实现绑定!现在请教的就是使用动态创建的方式中,
如何将scale:PathView.menuScale,参数绑定到新建的控件中?带上PageType1.qml的代码:
Rectangle{        
width : parent.width//menuPathView.width//*0.5        
height: parent.height//menuPathView.height//*0.5        
//z:scaleOrder
//opacity: mPath.menuAlpha
//scaleathView.menuScale        
color: "red"}


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了