有没有可能使用QML替换视图中的委托?

时间:2011-04-06 18:38:49

标签: model-view-controller qt delegates model qml

例如

 ListView {
     id: listView
     anchors.fill: parent
     anchors.margins: 20
     model: myModel
     delegate: myDelegate
     highlightFollowsCurrentItem: true
     focus: true
     ListModel {
         id: myModel

         ListElement {
             name: "Apple"; cost: 2.45
             attributes: [
                 ListElement { description: "Core" },
                 ListElement { description: "Deciduous" }
             ]
         isOnMouse: false
     }
 }

我使用myDelegate作为任何模型的默认值,但是如果单击其中一个项目,我只想为此项目使用另一个委托,仅适用于此项目。

有可能吗?

2 个答案:

答案 0 :(得分:1)

如果您使用QML Loader元素作为代理,那么您应该能够更改其sourcesourceComponent,从而有效地更改单个项目的委托。

答案 1 :(得分:1)

在您的主要项目中定义:

property boolean isItem:false

在你的代表作中:

onClicked: isItem=index==myIndex其中myIndex描述了您的特殊项目

listView中的

delegate: isItem? otherDel : myDelegate