我在C++中有一个分层(嵌套) C++,即Outer模型的项是Inner模型的实例,而类Inner的项是一些QObject派生的Data实例。Outer具有访问Inner项的submodel角色。
对应的QML代码在Repeater中嵌套一个ListView。ListView正确地迭代Inner类型的项,我可以在ListView委托中检索Inner模型实例的项计数。
我遇到的问题是,Repeater只是不迭代Inner模型的Data实例。在C++模型的方法中使用调试打印,我看到
rowCount()的Inner实例,但是data()实例调用Inner。QML代码如下所示:
import QtQuick 2.0
import QtQuick.Controls 1.3
import NestedModels 1.0 as Models
ScrollView {
width: 1980; height:600
Component {
id: inner
Item {
Text {
x:1000; font.pointSize: 9
text: "inner " + model.name
}
}
}
Component {
id: outer
Item {
height: 40
property var innerModel: model.submodel
Text {
font.pointSize: 9
text: "outer " + model.objectName
+ ": inner " + innerModel
}
Repeater {
model: innerModel
delegate: inner
}
}
}
ListView {
Models.OuterModel { id: outerModel }
model: outerModel
delegate: outer
Text {
x: 200; y: 400; font.pointSize: 9
text: outerModel.objectName + ": " + outerModel.count + " rows. " + outerModel.getItem(0)
}
}
}
发布于 2019-09-16 10:38:25
尝试使用单独的qml文件OuterDelegate.qml i有相同的问题,问题是您将内部模型不正确地传递给中继器。
https://stackoverflow.com/questions/31628761
复制相似问题