无法将QQmlListReference分配给QString

时间:2017-07-03 15:08:48

标签: javascript qml qt-creator

所以我对列表模型和委托有一个有趣的问题。

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)。

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

提前致谢!!

1 个答案:

答案 0 :(得分:1)

您的问题是正确的,因为您的列表元素角色名为Install Django within a Virtual Environment

根本问题是,当您执行data时,您正在访问文本项目的data property。您的模型数据会被属性遮蔽。

为了安全起见,请使用text: data为您的角色添加访问权限前缀,以避免与您的代理属性发生命名冲突。在您的情况下,它将是model

text: model.data不是保留关键字,它恰好是您委托的某个属性的名称。