2017-05-10 45 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