Есть ли возможность заменить делегат в представлении, используя QML? - PullRequest
0 голосов
/ 06 апреля 2011

Например,

 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 ]

1 голос
/ 21 октября 2011

В вашей основной позиции определите:

property boolean isItem:false

в вашем делегате делают:

onClicked: isItem=index==myIndex, где myIndex описывает ваш специальный элемент

в наборе listView:

delegate: isItem? otherDel : myDelegate
1 голос
/ 07 апреля 2011

Если вы используете элемент QML Loader в качестве своего делегата, то вы сможете изменить его source или sourceComponent, эффективно изменив ваш делегат для одного элемента.

...