我有以下C ++模型结构:
Manager // QAbstractListModel
↪ Slot // QAbstractListModel
↪ Processor // QAbstractListModel
↪ name // Q_PROPERTY
我在实例化时只传递了Manager
对QML的引用。我需要使用ComboBox
填充Processor
,但我不知道如何填写此嵌套结构。
以下是我计划的代码(但现在不行):
ComboBox {
model: Repeater {
model: manager
delegate: Repeater {
model: slot
delegate:Repeater {
model: processor
delegate: ListModel {
ListElement {text: name}
}
}
}
}
}
我知道代表们正在指定如何显示数据(这就是ComboBox
没有这个数据的原因),但我不知道如何正确实现这一点。
所以我的问题是:如何递归填充ListModel
?
答案 0 :(得分:1)
我想出了以下解决方案来递归填充ComboBox:
ComboBox {
id: comboBox
model: ListModel {}
textRole: "processorName"
Repeater {
model: manager
delegate: Repeater {
model: slot
delegate: Repeater {
model: processor
Component.onCompleted:
comboBox.model.append(
{"processorName": model.Processor.Name}
);
}
}
}
}
答案 1 :(得分:0)
添加到您的QAbstractListModel角色,该角色返回另一个QAbstractListModel。