ListView 的每个元素的唯一 ID
Unique id for each element of a ListView
我有 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)
我该如何继续?
嗯,如果你严格(或不创建)绑定,它不会自动更新:
delegate: Text {
Component.onCompleted: text = uniqueId++
}
但是,我认为避免这种情况并不能真正解决您的设计问题。您应该做的是将唯一 ID 部分一直实施到模型数据中。
我有 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)
我该如何继续?
嗯,如果你严格(或不创建)绑定,它不会自动更新:
delegate: Text {
Component.onCompleted: text = uniqueId++
}
但是,我认为避免这种情况并不能真正解决您的设计问题。您应该做的是将唯一 ID 部分一直实施到模型数据中。