建立类似iPod的菜单

时间:2012-08-02 13:57:28

标签: qt qml

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

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

另外,我必须严格按照QML这样做。它有一个C ++部分;然而,这只是为了渲染QML,就是这样。有没有人有任何想法如何去做?

1 个答案:

答案 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
    }
  }
}