QML

时间:2016-11-08 16:13:15

标签: qt collections qml listmodel

如何创建ListModel的集合 每个列表ListModel包含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   
    }
}

一个型号是这样的。我想用2或3 ListModel集合

创建一个qml

如何创建集合。

修改  我想动态创建模型集合。 每个列表模型包含最多5个元素。一旦它达到计数5,那么我需要创建另一个包含元素的ListModel。等等。

2 个答案:

答案 0 :(得分:1)

您的集合将由一个本质上是JS数组的属性表示。在插入元素时,检查集合是否包含模型,或者是否包含模型,模型是否已包含5个元素,如果是,则向其添加另一个模型,然后将该项追加到集合中的最后一个模型: / p>

  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})
  }

答案 1 :(得分:0)

一种选择是在C ++中正确地执行此操作,其中一个对象提供模型列表或模型作为其内容。

这避免了QML端的脚本/数据处理,允许显式控制状态,甚至重新加载QML等。 也没有(define (rolling-window l size) (if (< (length l) size) l ((take l size) (rolling-window (cdr l) size)))) 的任何限制,例如允许翻译文本。