Qml 属性绑定不';I don’我没有按预期工作

Qml 属性绑定不';I don’我没有按预期工作,qml,qtquick2,Qml,Qtquick2,我正在尝试实现一个包含复杂数据的列表。在我的例子中,它应该是这样一个数组: [ { item: "itemName1", objects: [x1,x1,x1] }, { item: "itemName2", objects: [x2,x2,x2] } ] 据我所知,有两种方法可以做到这一点。首先是将QObjtRealStB模型从C++暴露到QML。而不是目前我不感兴趣,因为我想在纯QML中实现它。但是ListElement的角色必须只包含简单的常量、行字符串、数字等,即不包含

我正在尝试实现一个包含复杂数据的列表。在我的例子中,它应该是这样一个数组:

[
    { item: "itemName1", objects: [x1,x1,x1] },
    { item: "itemName2", objects: [x2,x2,x2] }
]
据我所知,有两种方法可以做到这一点。首先是将QObjtRealStB模型从C++暴露到QML。而不是目前我不感兴趣,因为我想在纯QML中实现它。但是ListElement的角色必须只包含简单的常量、行字符串、数字等,即不包含数组。 因此,我将数据源作为外部阵列:

导入QtQuick 2.5
导入QtQuick.Layouts 1.2
导入QtQuick.Window 2.0
窗口{
宽度:500
身高:500
id:窗口
列表视图{
id:listView
锚定。填充:父级
1.2.2.2
间距:2
属性变量数据:[{name:“item1”,对象:[1,2,3]}]
型号:data.length
代表:矩形{
宽度:parent.width
高度:content.height
属性int itemIndex:索引
颜色:索引%2?#EFEFEF:“#DEDEDE”
行布局{
id:内容
间距:10
正文{
文本:listView.data[itemIndex]。名称
}
纵队{
中继器{
模型:listView.data[itemIndex].objects.length
正文{
文本:listView.data[itemIndex]。对象[index]
}
}
}
}
}
Component.onCompleted:{
push({name:“item2”,对象:[4,5,6]});
push({name:“item3”,对象:[7,8,9]});
listView.model=listView.data.length;//没有这一行它就不能工作
}
}
}

它可以很好地与静态数组配合使用。当我动态填充数组时,问题出现了。在这种情况下,属性绑定(model:data.length)突然停止工作。因此,解决方法是手动设置,但我不喜欢此解决方案。

为什么必须在纯QML中进行设置?。我记得有一个类似的问题和一个建议的答案,这可能是一个解决办法。这不是真正的项目。我只是想找到一种高效且成本最低的方法来执行指定的任务。谢谢@BaCaRoZzo,我刚刚考虑过用新值重新设计数组。但实际上,我不喜欢这种变通方法,因为对于大阵列来说,这种操作可能太昂贵。所以,我想我会坚持我的决定。我一直在试图找到一个解决办法,但我找不到一个合适的方法来解决你的问题。我有,但我认为你的想法与你不同。