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