gpt4 book ai didi

qml - 从 QML 访问嵌套的 QAbstractListModel

转载 作者:行者123 更新时间:2023-12-04 14:44:45 28 4
gpt4 key购买 nike

我在 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)
}
}
}

最佳答案

尝试使用单独的 qml 文件 OuterDelegate.qml我遇到了同样的问题,问题是你错误地将内部模型传递给了转发器

关于qml - 从 QML 访问嵌套的 QAbstractListModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31628761/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com