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