0

私はQMLに比較的慣れていないので、少し助けが必要です。アーティストメニュー、トラックメニュー、アルバムメニューを含むメインメニューを表示するiPodのようなメニューを作成する必要があります。モデルごとに同じListViewを使用して、モデルを動的にスワップアウトすることを考えましたが、QMLではこれを実行できません(各要素を自分で追加および削除する必要があるようです)。

私が思いついた別の解決策は、ローダーを使用して対応するモデルで異なる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 に答える