成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

如何用qml做一個(gè)炫酷的二級(jí)列表控件ExpandableList

Cobub / 2142人閱讀

摘要:在日常開(kāi)發(fā)中,我們經(jīng)常使用二級(jí)列表控件,而且我們想做成自定義任何一個(gè)樣式的,小編親自做一個(gè)這樣的控件分享給大家,以后會(huì)吧這個(gè)控件格式化成可自定義樣式形狀的,為了做效果暫時(shí)做成定格的二級(jí)控件好,在這里簡(jiǎn)單介紹實(shí)現(xiàn)這個(gè)控件的思路首先我們要理解二

在日常開(kāi)發(fā)中,我們經(jīng)常使用二級(jí)列表控件,而且我們想做成自定義任何一個(gè)樣式的,小編親自做一個(gè)這樣的控件分享給大家,以后會(huì)吧
這個(gè)控件格式化成可自定義樣式形狀的,為了做效果暫時(shí)做成定格的二級(jí)控件:




好,在這里簡(jiǎn)單介紹實(shí)現(xiàn)這個(gè)控件的思路:
首先我們要理解二級(jí)控件的構(gòu)架:

列表視圖 父級(jí)組件 子級(jí)組件 父級(jí)數(shù)據(jù)組 子級(jí)數(shù)據(jù)組
在這里我們通過(guò)qml實(shí)用的ListModel來(lái)存放父級(jí)數(shù)據(jù)和子級(jí)數(shù)據(jù)

import QtQuick 2.5

Item {
    property int pItemHeight:50
    property int cItemHeight:40

    //當(dāng)前顯示子組件的數(shù)量
    property int currentChildrenCount:0
    //當(dāng)前福組件的數(shù)量
    property int currentparentcount:appTypemodel.count

    //父組件之間的間隔
    property int parentItemSpacing:20

    //接收對(duì)應(yīng)子控件被點(diǎn)擊后返回的引索值,以處理數(shù)據(jù)的選擇
    signal itemClicked(int index);
    id:root

    //子級(jí)數(shù)據(jù)存儲(chǔ)
    ListModel{
        id:appsmodel
        ListElement{
            appName:"hellword"
            appType: "media"
        }
        ListElement{
            appName:"tommego music"
            appType: "media"
        }
        ListElement{
            appName:"my ending"
            appType: "media"
        }
        ListElement{
            appName:"close music"
            appType: "media"
        }
        ListElement{
            appName:"tommego media"
            appType: "media"
        }
        ListElement{
            appName:"tommego media"
            appType: "games"
        }
        ListElement{
            appName:"tommego media"
            appType: "games"
        }
        ListElement{
            appName:"tommego media"
            appType: "games"
        }
        ListElement{
            appName:"tommego media"
            appType: "games"
        }

        ListElement{
            appName:"tommego media"
            appType: "games"
        }
        ListElement{
            appName:"tommego media"
            appType: "notes"
        }
        ListElement{
            appName:"tommego media"
            appType: "notes"
        }
        ListElement{
            appName:"tommego media"
            appType: "notes"
        }
        ListElement{
            appName:"tommego media"
            appType: "notes"
        }
        ListElement{
            appName:"tommego media"
            appType: "notes"
        }
        ListElement{
            appName:"tommego media"
            appType: "others"
        }
        ListElement{
            appName:"tommego media"
            appType: "others"
        }
        ListElement{
            appName:"tommego media"
            appType: "others"
        }
        ListElement{
            appName:"tommego media"
            appType: "others"
        }
        ListElement{
            appName:"tommego media"
            appType: "others"
        }
        ListElement{
            appName:"tommego media"
            appType: "others"
        }

    }
    //父級(jí)數(shù)據(jù)存儲(chǔ)
    ListModel{
        id:appTypemodel
        ListElement{
            appType: "media"
            shown:false
        }
        ListElement{
            appType: "games"
            shown:false
        }
        ListElement{
            appType: "notes"
            shown:false
        }
        ListElement{
            appType: "others"
            shown:false
        }
    }

    //父級(jí)列表顯示,內(nèi)嵌子級(jí)列表
    Column{
        id:parentcol
        spacing: parentItemSpacing
        Repeater{
            model:appTypemodel
            delegate:Component{
                id:content

                Item{
                    width: root.width
                    height: appTypemodel.get(parentcontent.cindex).shown?pItemHeight+cItemHeight*appcol.childrenCount:pItemHeight
                    Behavior on height{
                        PropertyAnimation{
                            properties: "height"
                            duration: 350
                            easing.type:Easing.OutQuart
                        }
                    }
                    Rectangle{
                        id:typebnt
                        width: pma.containsMouse?root.width:root.width-20
                        height: pItemHeight
                        radius: pma.containsMouse?0:height/2
                        color: "#3d3c3c"
                        Behavior on radius{
                            PropertyAnimation{
                                properties: "radius"
                                duration: 250
                            }
                        }
                        Behavior on width{
                            PropertyAnimation{
                                properties: "width"
                                duration: 250
                            }
                        }
                        Text {
                            id: typetext
                            text: qsTr(appType)
                            anchors.centerIn: parent
                            color: "#12ccaa"
                            font.pixelSize: 20
                        }
                        MouseArea{
                            id:pma
                            anchors.fill: parent
                            hoverEnabled: true
                            onClicked: {
                                //判斷這個(gè)父組件是否已經(jīng)顯示子組件
                                if(appTypemodel.get(index).shown==false){
                                    for(var a=0;a           
               
                                           
                       
                 

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/79853.html

相關(guān)文章

  • 前端每日實(shí)戰(zhàn):17# 視頻演示何用純 CSS 創(chuàng)作酷的同心矩形旋轉(zhuǎn)動(dòng)畫(huà)

    摘要:效果預(yù)覽按下右側(cè)的點(diǎn)擊預(yù)覽按鈕可以在當(dāng)前頁(yè)面預(yù)覽,點(diǎn)擊鏈接可以全屏預(yù)覽??山换ヒ曨l教程此視頻是可以交互的,你可以隨時(shí)暫停視頻,編輯視頻中的代碼。 showImg(https://segmentfault.com/img/bVbbyrX?w=500&h=500); 效果預(yù)覽 按下右側(cè)的點(diǎn)擊預(yù)覽按鈕可以在當(dāng)前頁(yè)面預(yù)覽,點(diǎn)擊鏈接可以全屏預(yù)覽。 https://codepen.io/comeh...

    luqiuwen 評(píng)論0 收藏0
  • 前端每日實(shí)戰(zhàn):17# 視頻演示何用純 CSS 創(chuàng)作酷的同心矩形旋轉(zhuǎn)動(dòng)畫(huà)

    摘要:效果預(yù)覽按下右側(cè)的點(diǎn)擊預(yù)覽按鈕可以在當(dāng)前頁(yè)面預(yù)覽,點(diǎn)擊鏈接可以全屏預(yù)覽??山换ヒ曨l教程此視頻是可以交互的,你可以隨時(shí)暫停視頻,編輯視頻中的代碼。 showImg(https://segmentfault.com/img/bVbbyrX?w=500&h=500); 效果預(yù)覽 按下右側(cè)的點(diǎn)擊預(yù)覽按鈕可以在當(dāng)前頁(yè)面預(yù)覽,點(diǎn)擊鏈接可以全屏預(yù)覽。 https://codepen.io/comeh...

    lixiang 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

Cobub

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<