从QML列表中获取元素

时间:2013-07-02 20:57:41

标签: qml qlistview

我正在使用QML中的更多按钮实现列表视图。 列表和按钮将如下所示 “a b c d e moreButton”。 (其中b c d和e是字符串的元素),我的列表将包含5个以上的元素。单击更多按钮后,我需要从列表中获取接下来的5个元素。说 “f g h i j”等等它应该继续,直到显示列表中的所有元素。我的问题是如何从列表中获取前5个,第2个5等元素? 任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:2)

您可以这样做:

ListView
{
    id: view
    x: 50
    width: 200; height: 500

    property variant alphabetArray: ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z' ]


    function append(  )
    {
        // @ToDoyourself : Check all the boundary conditions in this function

        var loopTime = alphabetModel.count
        for( var i = loopTime ; i <= loopTime+5 ; ++ i )
            alphabetModel.append({ "name" : alphabetArray[i] })
    }

    model:  ListModel
    {
        id: alphabetModel
        ListElement {  name: "a"   }
        ListElement {  name: "b"   }
        ListElement {  name: "c"   }
        ListElement {  name: "d"   }
        ListElement {  name: "e"   }
    }

    footer:

        Text
        {
            text : "More" ; font.pixelSize: 35 ; color : "grey"
            MouseArea
            {
                anchors.fill: parent
                onClicked:
                {
                    append()
                }
            }
        }


    delegate:
    Item
    {
        height: 100

        Text
        {
            text: name
            height: 20
            font.pixelSize: 30
            color: index === view.currentIndex ?  "black" : "red"

            MouseArea
            {
                anchors.fill: parent
                onClicked: view.currentIndex = index
            }
        }
    }
}

注意:在函数append()中,我没有对数组进行任何边界检查。自己做这个练习。