所以我对列表模型和委托有一个有趣的问题。
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});
}
}
当我尝试将新元素添加到列表模型时,我收到此错误:&#34;无法将QQmlListReference分配给QString。&#34;我终于发现问题是我的list元素被称为数据。我只是把它命名为别的东西,它运作得很好。我认为问题在于&#34;数据&#34;是一个保留字,但我无法在Javascript或QML列表中找到它。虽然我找不到官方的qml保留字列表。所以你们知道更完整的清单吗?我想避免再次找到这样的保留字,或者如果问题实际上是其他问题,我希望听到答案。
这些是我正在查看的列表:
https://www.w3schools.com/js/js_reserved.asp(Javascript)。
提前致谢!!
答案 0 :(得分:1)
您的问题是正确的,因为您的列表元素角色名为Install Django within a Virtual Environment
。
根本问题是,当您执行data
时,您正在访问文本项目的data
property。您的模型数据会被属性遮蔽。
为了安全起见,请使用text: data
为您的角色添加访问权限前缀,以避免与您的代理属性发生命名冲突。在您的情况下,它将是model
。
text: model.data
不是保留关键字,它恰好是您委托的某个属性的名称。