无法将 QQmlListReference 分配给 QString
Unable to assign QQmlListReference to 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});
}
}
当我尝试将新元素附加到列表模型时出现此错误:"Unable to assign QQmlListReference to QString."我终于发现问题出在我的列表元素被称为数据。我只是给它取了别的名字,它工作得很好。我认为问题是 "data" 是一个保留字,但我在 Javascript 或 QML 列表中都找不到它。虽然我找不到官方的 qml 保留字列表。那么你们知道更完整的列表吗?我想避免再次找到这样的保留字,或者如果问题实际上是其他问题,我希望听到答案。
这些是我正在查看的列表:
https://www.w3schools.com/js/js_reserved.asp (Javascript).
提前致谢!!
你是对的,你的问题是因为你的列表元素角色被称为 data
。
潜在的问题是,当您执行 text: data
时,您正在访问文本项的 data
property。您的模型数据被 属性.
隐藏
为了安全起见,请在您对角色的访问权限前加上 model
前缀,以避免与您的委托属性发生命名冲突。在你的情况下它将是 text: model.data
.
data
不是保留关键字,它恰好是您的委托属性之一的名称。
所以我在列表模型和委托方面遇到了一个有趣的问题。
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});
}
}
当我尝试将新元素附加到列表模型时出现此错误:"Unable to assign QQmlListReference to QString."我终于发现问题出在我的列表元素被称为数据。我只是给它取了别的名字,它工作得很好。我认为问题是 "data" 是一个保留字,但我在 Javascript 或 QML 列表中都找不到它。虽然我找不到官方的 qml 保留字列表。那么你们知道更完整的列表吗?我想避免再次找到这样的保留字,或者如果问题实际上是其他问题,我希望听到答案。
这些是我正在查看的列表:
https://www.w3schools.com/js/js_reserved.asp (Javascript).
提前致谢!!
你是对的,你的问题是因为你的列表元素角色被称为 data
。
潜在的问题是,当您执行 text: data
时,您正在访问文本项的 data
property。您的模型数据被 属性.
为了安全起见,请在您对角色的访问权限前加上 model
前缀,以避免与您的委托属性发生命名冲突。在你的情况下它将是 text: model.data
.
data
不是保留关键字,它恰好是您的委托属性之一的名称。