Коллекция 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Например, позволяет переводить текст.

Другие вопросы по тегам