Коллекция ListModel в QML
Как я могу создать коллекцию ListModel
Каждый список ListModel
conatains 5 ListElement
ListModel{
ListElement {
type:"1"
title:"5:03pm"
description:"text-1"
isLoaded: false
}
ListElement {
type:"1"
title:"5:03pm"
description:"text-1"
isLoaded: false
}
ListElement {
type:"1"
title:"5:03pm"
description:"text-1"
isLoaded: false
}
ListElement {
type:"1"
title:"5:03pm"
description:"text-1"
isLoaded: false
}
ListElement {
type:"1"
title:"5:03pm"
description:"text-1"
isLoaded: false
}
}
Одна модель такая. Я хочу создать qml с 2 или 3 ListModel
коллекция
Как я могу создать коллекцию.
Изменить: я хочу создать коллекцию моделей динамически. Каждая модель списка содержит максимум 5 элементов. как только он достигнет значения 5, мне нужно создать еще одну ListModel с элементами. И так далее.
2 ответа
Ваша коллекция будет представлена свойством, которое по сути является массивом JS. При вставке элементов вы проверяете, содержит ли коллекция модель, или если она есть, имеет ли модель уже 5 элементов, если вы добавляете в нее другую модель, то добавьте элемент к последней модели в коллекции:
id: main
property var models: []
Component {
id: mod
ListModel {}
}
function addItem(type, title, desc) {
if (!models.length || models[models.length - 1].count > 4) models.push(mod.createObject(main))
models[models.length - 1].append({"type": type, "title": title, "description": desc})
}
Один из вариантов - сделать это правильно в C++, с одним объектом, предоставляющим список моделей или модель, которая имеет модели в качестве своего содержимого.
Это позволяет избежать сценариев / обработки данных на стороне QML, что позволяет явно контролировать состояние, даже перезагружать QML и т. Д. Также не имеет каких-либо ограничений: ListModel
Например, позволяет переводить текст.