从QML访问嵌套的QAbstractListModel

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

1个回答

1
尝试使用单独的qml文件OuterDelegate.qml。 我也遇到了同样的问题,问题在于您错误地将内部模型传递给了重复器。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接