I want to build multiple ListModel that will all start with common elements.
I want to fill the remaining elements from another ListModel.
Example : ListModel (1) :
COMMON A
COMMON B
COMMON C
A1
B1
C1
ListModel (2) :
COMMON A
COMMON B
COMMON C
A2
B2
C2
Is there a way to declaratively "merge" or extend two ListModel?
So far I am doing it dynamically:
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)
}
}
}
}
Edit: In other words, I would like to do something as simple as this :
// MyModel.qml
ListModel {
ListElement { value: "COMMON A" }
ListElement { value: "COMMON B" }
ListElement { value: "COMMON C" }
}
Being able to extend it as needed in another component:
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" }
}
}
But it does not seem possible since I obtain the following error:
Cannot assign to non-existent default property
