0

我对 QML 比较陌生,需要一些帮助。我必须创建一个类似 iPod 的菜单,该菜单显示带有艺术家菜单、曲目菜单和专辑菜单的主菜单。我考虑过为每个模型使用相同的 ListView,然后只是动态地交换模型,但是 QML 不允许我这样做(看起来你必须自己添加和删除每个元素)。

我想出的另一个解决方案是使用 Loader 加载具有相应模型的不同 ListView,但我想重新使用相同的 ListView,因为唯一改变的是内容。

另外,我必须在严格的 QML 中执行此操作。其中有 C++ 部分;然而,这只是为了渲染 QML,仅此而已。有谁知道如何解决这个问题?

4

1 回答 1

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
    }
  }
}
于 2012-08-02T15:38:09.147 回答