2012-08-02 62 views
0

我對QML比較陌生,需要一點幫助。我必須創建一個類似iPod的菜單,顯示帶有藝術家菜單,曲目菜單和專輯菜單的主菜單。我想過爲每個模型使用相同的ListView,然後只是動態地交換模型,但QML不允​​許我這樣做(看起來你必須自己添加和刪除每個元素)。建立類似iPod的菜單

我想到的另一個解決方案是使用Loader加載不同的ListView與相應的模型,但我想重新使用相同的ListView,因爲唯一正在改變的是內容。

此外,我必須在嚴格QML中做到這一點。它有一個C++部分;不過,這只是爲了呈現QML,就是這樣。有沒有人有任何想法如何去做呢?

回答

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