2017-05-10 113 views
0

我有ListViewItems,我需要每个element都有一个唯一的idListView的每个元素的唯一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 = list.uniqueId)

我该怎么办?

回答

1

好吧,如果你严重的(或不产生)的结合,它不会自动更新:

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

不过,我不认为避免这种会真正解决您的设计。你应该做的是将唯一的id部分一直实施到模型数据中。

+0

哦,谢谢,我认为它有相同的行为,如果你在一个函数中做。 我想在视图中这样做,因为它只是一个视图问题,我不想更改我的数据模型。但是,我需要考虑一点,你可能是对的。 –

+1

当你移动ListView并且委托将被销毁并重新创建时,会不会有问题? – derM

+0

这就是我暗示的。但是,他可能只想要一个唯一的ID,但不是一个持久的ID。 – dtech

相关问题