无法将QQmlListReference分配给QString
问题描述:
所以我对列表模型和委托有一个有趣的问题。无法将QQmlListReference分配给QString
ListView{
....
delegate: Component {
Text{
text: data
}
}
}
...
ListModel {
id: captureModel
}
...
function updateList() {
...
for (var i = 0; i < list.rows.length; ++i) {
captureModel.append({"data": list.rows.item(i).data});
}
}
当我试图新elemets追加到列表模式,我得到这个错误:“无法分配给QQmlListReference QString的。”我终于明白,问题在于我的列表元素被称为数据。我只是把它命名为别的,它工作得很好。我认为问题在于“数据”是一个保留字,但我无法在Javascript或QML列表中找到它。虽然我找不到官方的qml保留字列表。那么你们知道更完整的清单吗?我希望避免再次查找这样的保留字,或者如果问题实际上是其他问题,我希望听到答案。
这些都是我一直在寻找名单:
https://www.w3schools.com/js/js_reserved.asp(JavaScript)的。
预先感谢!!
答
你是对的,你的问题是因为你的列表元素角色被称为data
。
潜在的问题是,当您做text: data
您正在访问文本项目的data
property。您的模型数据受到该属性的影响。
为了安全起见,请使用model
作为您角色的访问前缀,以避免与委托属性发生命名冲突。在你的情况下,它将是text: model.data
。
data
不是保留关键字,它只是恰好是您的委托人的某个属性的名称。