【问题标题】:Fill QML ListModel from nested models从嵌套模型中填充 QML ListModel
【发布时间】:2015-03-01 16:57:17
【问题描述】:

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

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

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

这是我计划拥有的代码(但现在不工作):

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

我知道代表是用于指定如何显示数据(这就是为什么ComboBox 没有这个),但我不知道如何正确实现这一点。

所以我的问题是:如何递归填写ListModel

【问题讨论】:

  • 这个问题仍然是实际的。由于投反对票,我试图大大简化它,我希望现在更清楚。

标签: qt qml qtquick2


【解决方案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}
                    );
            }
        }
    }
}

【讨论】:

    【解决方案2】:

    添加到返回另一个 QAbstractListModel 的 QAbstractListModel 角色。

    【讨论】:

    • 幸运的是,这部分已经完成。但是如何将子模型的数据添加到 QML/Qt Quick ListModel 中?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    • 2020-10-24
    • 1970-01-01
    • 2016-06-07
    • 1970-01-01
    • 1970-01-01
    • 2012-04-23
    相关资源
    最近更新 更多