从嵌套模型中填充QML ListModel

时间:2015-03-01 16:57:18

标签: qt qml qtquick2

我有以下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

2 个答案:

答案 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。