我想在我的QML ListModel上實現一個回調函數,以便在ListModel中的數據發生更改時執行一些操作。顯然,不可能在...上創建...更改ListModel中單個用戶定義屬性的處理程序。所以,我試圖使用ListModel可用的onDataChanged處理程序。QML ListModel onDataChanged問題
ListModel {
id: model
onDataChanged: {
console.warn("onDataChanged: "+get(topLeft).val + " vs. " + get(bottomRight).val)
}
}
但是,onDataChanged似乎只引用ListModel中的第一個元素。也就是說,即使我在列表中操縱元素,topLeft和bottomRight也始終指向第一個元素。
我在這裏需要的是一個可靠的處理程序,當它觸發時,它可以準確地反映ListModel中正確的行。
如果您使用[通用對象模型](http://stackoverflow.com/questions/35160909/how-to-create-a-generic-object-model-for-use-in-qml/35161903#35161903 )然後您可以使用具有單個更改通知的常規屬性。 – dtech
由於項目的限制,不可能。爲什麼當我操縱一個不同的行時,onDataChanged會返回第一行?我只是不正確地使用這些參數? – user1765354
'QAbstractItemModel :: dataChanged()'的參數是'QModelIndex',即類類型的對象。 您正在將這些函數傳遞給期望整數的函數,JavaScript環境可能會執行其魔術類型轉換之一。 對於變化很奇怪的數據使用ListModel通常表示適當的自定義模型會更好。 –