【发布时间】:2019-05-09 11:34:56
【问题描述】:
我想构建多个ListModel,它们都将从公共元素开始。
我想从另一个ListModel 中填充剩余的元素。
示例: 列表模型(1):
COMMON A
COMMON B
COMMON C
A1
B1
C1
列表模型(2):
COMMON A
COMMON B
COMMON C
A2
B2
C2
有没有办法以声明方式“合并”或扩展两个ListModel?
到目前为止,我是动态进行的:
import QtQuick 2.9
import QtQuick.Window 2.2
Window {
width: 480
height: 320
visible: true
ListModel {
id: commonModel
ListElement { value: "COMMON A" }
ListElement { value: "COMMON B" }
ListElement { value: "COMMON C" }
}
ListModel {
id: model1
ListElement { value: "A1" }
ListElement { value: "B1" }
ListElement { value: "C1" }
}
ListModel {
id: model2
ListElement { value: "A2" }
ListElement { value: "B2" }
ListElement { value: "C2" }
}
ListView {
anchors.fill: parent
model: commonModel // here I would like to directly specify the "concatenated" model
delegate: Text { text: model.value}
// dynamic part that I want to avoid
readonly property var additionalModel: model2
Component.onCompleted: {
for (var i = 0; i < additionalModel.count; ++i) {
var elt = additionalModel.get(i)
model.append(elt)
}
}
}
}
编辑:换句话说,我想做一些像这样简单的事情:
// MyModel.qml
ListModel {
ListElement { value: "COMMON A" }
ListElement { value: "COMMON B" }
ListElement { value: "COMMON C" }
}
能够根据需要在另一个组件中扩展它:
ListView {
model: MyModel {
// keep original elements from MyModel and add custom "component-related" elements
ListElement { value: "OTHER A" }
ListElement { value: "OTHER B" }
ListElement { value: "OTHER C" }
}
}
但似乎不可能,因为我收到以下错误:
无法分配给不存在的默认属性
【问题讨论】: