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

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

预先感谢!!

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

潜在的问题是,当您做text: data您正在访问文本项目的data property。您的模型数据受到该属性的影响。

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

data不是保留关键字,它只是恰好是您的委托人的某个属性的名称。