2013-07-02 3 views
0

Я реализую представление списка с большей кнопкой в ​​QML. Список и кнопка будут выглядеть так: "a b c d e moreButton". (Где b c d и e - элементы строки), и мой список будет содержать более 5 элементов. После нажатия кнопки больше мне нужно получить следующие 5 элементов из списка. Скажем «f g h i j» и т. Д., Он должен продолжаться до тех пор, пока не отобразятся все элементы в списке. Мой вопрос: как я могу получить первые 5, 2 и т. Д. Элементов из списка? Любая помощь приветствуется.Получение элементов из списка QML

ответ

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() я не делал никаких границ проверки на массиве. Сделайте это как упражнение самостоятельно.

+0

Спасибо за помощь Амит. Это частично решает мою проблему. :) – user2434040