我有以下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
?
发布于 2015-04-03 21:14:32
我想出了以下解决方案来递归地填充一个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}
);
}
}
}
}
发布于 2015-03-02 10:10:54
添加到返回另一个QAbstractListModel的QAbstractListModel角色中。
https://stackoverflow.com/questions/28796320
复制相似问题