ListView的每个元素的唯一ID

时间:2017-05-10 08:00:23

标签: qt listview qml qtquick2

我有ListView Items我需要每个element都有一个唯一的id

但我的项目有两个条件:

  • 我无法使用index,因为我的Items 可以移动(拖放),因此他们的index会发生变化

  • 每个Item 可以多次显示,因此这些元素没有任何属性可以帮助我区分它们。

我的想法是做那样的事情:

ListView {
    id: list
    property int uniqueId: 0

    width: 180; height: 200

    model: myModel

    delegate: Text {
        property int uniqueid: list.uniqueId
        text: uniqueid
    }
    Component.onCompleted: list.uniqueId++
}

但是它不起作用,因为更新list.uniqueId时,它会更新我的项ID和它们都具有相同的ID ( id = list.uniqueId)

我该怎么办?

1 个答案:

答案 0 :(得分:1)

好吧,如果您严重(或不创建)绑定,它将不会自动更新:

delegate: Text {
        Component.onCompleted: text = uniqueId++
}

但是,我并不认为避免这种情况会真正修复您的设计。您应该做的是将唯一的id部分一直实现回模型数据。