我对QML比较陌生,需要一些帮助。我必须创建一个类似iPod的菜单,显示一个带有艺术家菜单,曲目菜单和专辑菜单的主菜单。我想为每个模型使用相同的ListView,然后只是动态地交换模型,但QML不允许我这样做(看起来你必须自己添加和删除每个元素)。
我提出的另一个解决方案是使用Loader加载不同的ListViews和相应的模型但是我想重新使用相同的ListView,因为唯一改变的是内容。
另外,我必须严格按照QML这样做。它有一个C ++部分;然而,这只是为了渲染QML,就是这样。有没有人有任何想法如何去做?
答案 0 :(得分:2)
您可以更改ListView
运行时的模型。
请尝试以下代码:
Item {
width: 1000
height: 250
ListView {
id: view
anchors.fill: parent
model: model1
delegate: Component{
Rectangle {
width: 50
height: 50
Text {text: value; anchors.centerIn: parent}
}
}
}
ListModel {
id: model1
ListElement {value: "A"}
ListElement {value: "B"}
ListElement {value: "C"}
}
ListModel {
id: model2
ListElement {value: "1"}
ListElement {value: "2"}
ListElement {value: "3"}
}
MouseArea {
anchors.fill: parent
onClicked: {
console.log("model2")
view.model = model2
}
}
}