我有一个嵌套的C++
相应的QML代码在
QAbstractListModel
,即Outer
模型的项是Inner
模型的实例,而Inner
类的项是一些QObject
派生的Data
实例。 Outer
具有submodel
角色,用于访问Inner
项。相应的QML代码在
ListView
中嵌套了一个Repeater
。 ListView
正确迭代Inner
类型的项,我可以在ListView
委托中检索Inner
模型实例的项数。 我遇到的问题是Repeater
不会迭代Inner
模型的Data
实例。使用C++模型方法中的调试打印输出,我看到:
- QML查询
Inner
实例的rowCount()
,但是 - QML从不调用
Inner
实例的data()
。
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)
}
}
}