【发布时间】:2017-01-31 19:06:11
【问题描述】:
我正在尝试在我的 QML ListModel 上实现一个回调函数,以便在 ListModel 内的数据发生变化时执行一些操作。显然,不可能为 ListModel 中的单个用户定义属性创建 on...Changed 处理程序。所以,我正在尝试使用 ListModel 可用的 onDataChanged 处理程序。
ListModel {
id: model
onDataChanged: {
console.warn("onDataChanged: "+get(topLeft).val + " vs. " + get(bottomRight).val)
}
}
然而,onDataChanged 似乎只引用了 ListModel 中的第一个元素。也就是说,topLeft 和 bottomRight 始终指向第一个元素,即使我在列表中向下操作一个元素。
我需要的是一个可靠的处理程序,它能够在 ListModel 触发时准确地反映正确的行。
【问题讨论】:
-
如果您使用generic object model,则可以使用常规属性和单独的更改通知。
-
由于项目的限制,不可能。当我操作不同的行时,为什么 onDataChanged 会返回第一行?我只是错误地使用了这些参数吗?
-
QAbstractItemModel::dataChanged()的参数是QModelIndex,即类类型的对象。您将这些传递给期望整数的函数,JavaScript 环境可能会执行其魔术类型转换之一。对变化的数据使用 ListModel 很奇怪,通常表明使用适当的自定义模型会更好。
标签: javascript qt callback qml qabstractlistmodel