QML model-veiw 元素之间间隔控制

property int num: 0
 
    Component{
        id:mainmenu
        Item{
            id:menuChange
            x:10
            y:150 -5
            width:370
            height: 350
            ListModel {
                id:dialModel
                ListElement {
                    name:"车辆信息"
                    iconB:"qrc:/leftPanel/images/leftPanel/carThemeBg.png"
                    iconC:"qrc:/leftPanel/images/leftPanel/cartheme.png"
                    icon: "qrc:/leftPanel/images/leftPanel/carInfo.png"
                }
                ListElement {
                    name:"设置"
                    iconB:"qrc:/leftPanel/images/leftPanel/carThemeBg.png"
                    iconC:"qrc:/leftPanel/images/leftPanel/cartheme.png"
                    icon: "qrc:/leftPanel/images/leftPanel/setting.png"
                }
                ListElement {
                    name:"主题"
                    iconB:"qrc:/leftPanel/images/leftPanel/carThemeBg.png"
                    iconC:"qrc:/leftPanel/images/leftPanel/cartheme.png"
                    icon: "qrc:/leftPanel/images/leftPanel/theme.png"
                }
            }
            Component {
                id: delegate
                Item{
                    id:wrapper
                    width: 100
                    height: 200
                    scale: PathView.itemScale
                    z:PathView.itemZ
                    //只有当包里有一个类时,各个元素之间间隔才会相等
                    //例如,若将image id:name1 写到imageBg外,与image并列,间隔就不固定了,不好控制
                    Image {
                        id:imageBg
                        source:wrapper.PathView.isCurrentItem?"qrc:/leftPanel/images/leftPanel/themeBg.png": iconB
                        Image {
                            id: name1
                            anchors.horizontalCenter: parent.horizontalCenter
                            y:23
                            source: icon
                        }
                        Text {
                            id: nameText
                            text: name
                            anchors.horizontalCenter: imageBg.horizontalCenter
                            anchors.top: imageBg.top
                            anchors.topMargin: -30
                            font.pointSize: 16
                            color: wrapper.PathView.isCurrentItem ? "#1ae9fd" : "white"
                        }
                    }
                }
            }

            PathView {
                id:pathView40
                //            anchors.fill: parent //do not using,else location is changed
                anchors.centerIn: menuChange.Center
                //            x:10
                //            y:170
                //            anchors.verticalCenter: leftPanel.verticalCenter
                model: dialModel
                delegate: delegate
                currentIndex:num
                path: Path {
                    startX: 0; startY:menuChange.height/2
                    PathAttribute{name: "itemScale";value: 1}
                    PathAttribute{name:"itemZ";value: 0}
                    PathLine{x:185;y:menuChange.height/2+15}
                    PathAttribute{name:"itemScale";value: 1.4}
                    PathAttribute{name:"itemZ";value: 1}
                    PathLine{x:370;y:menuChange.height/2}
                    PathAttribute{name:"itemScale";value: 1}
                    PathAttribute{name:"itemZ";value: 0}
                }
                pathItemCount: 3
                preferredHighlightBegin: 0.5
                preferredHighlightEnd: 0.5
            }
        }
    }

SequentialAnimation{
            ScriptAction{script: {carCom.visible = false;leftLoader.active = true;leftLoader.sourceComponent = mainmenu}}
            PauseAnimation {duration: 500}
            ScriptAction{script: num = 0}
            PauseAnimation {duration: 1500}
            ScriptAction{script: num = 1}
            PauseAnimation {duration: 1500}
            ScriptAction{script: num = 0}
            PauseAnimation {duration: 1500}
            ScriptAction{script: num = 2}
            PauseAnimation {duration: 1500}
            ScriptAction{script: num = 0}
            loops: 2
        }

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值