从嵌套模型填充 QML ListModel

Fill QML ListModel from nested models

我有以下 C++ 模型结构:

Manager             // QAbstractListModel
   ↪ Slot           // QAbstractListModel
       ↪ Processor  // QAbstractListModel
            ↪ name  // Q_PROPERTY

我在实例化时只传递了对 QML 的 Manager 引用。我需要用 Processor 名称填充 ComboBox,但我不知道如何填充这个嵌套结构。

这是我计划使用的代码(但现在无法使用):

ComboBox {
    model: Repeater {
        model: manager
        delegate: Repeater {
            model: slot
            delegate:Repeater {
                model: processor
                delegate: ListModel {
                    ListElement {text: name}
                }
            }
        }
    }
}

我知道委托用于指定如何显示数据(这就是 ComboBox 没有这个的原因),但我不知道如何正确实现它。

所以我的问题是:如何递归地填充一个ListModel

向您的 QAbstractListModel 角色添加 returns 另一个 QAbstractListModel。

我提出了以下递归填充 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}
                    );
            }
        }
    }
}