无法将 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).

https://git.eclipse.org/c/cdt/org.eclipse.cdt.git/commit/?id=4cc61d0449ed463408633016759694bc59badc04 (qml)

提前致谢!!

你是对的,你的问题是因为你的列表元素角色被称为 data

潜在的问题是,当您执行 text: data 时,您正在访问文本项的 data property。您的模型数据被 属性.

隐藏

为了安全起见,请在您对角色的访问权限前加上 model 前缀,以避免与您的委托属性发生命名冲突。在你的情况下它将是 text: model.data.

data 不是保留关键字,它恰好是您的委托属性之一的名称。