如何将模型中没有的额外项目添加到 QML ComboBox 中?

Att*_*esi 5 qt combobox qml qabstractlistmodel

我有一个 QML ,上面ComboBox有一个QAbstractListModel附件。像这样的东西:

ComboBox {
    model: customListModel
}
Run Code Online (Sandbox Code Playgroud)

我希望它在下拉列表中显示模型中没有的额外项目。

例如,假设有两个项目customListModel:苹果和橙子。在下拉列表中应显示以下选项:

  • 全选
  • 苹果
  • 橙子

我无法将其添加到模型中,因为它包含自定义对象,并且我在程序中的其他几个地方使用了该模型,这会搞砸一切。

如何将这个“全选”选项添加到ComboBox???

Jar*_*Man 4

一种方法是创建某种代理模型。这里有几个想法:

  1. 您可以派生自己的 QAbstractProxyModel,将“全选”项添加到数据中。这可能是更复杂的选项,但也更有效。可以在此处找到以这种方式创建代理的示例。

  2. 您还可以在 QML 中创建代理。它看起来像这样:

Combobox {
    model: ListModel {
        id: proxyModel
        ListElement { modelData: "Select All" }

        Component.onCompleted: {
            for (var i = 0; i < customListModel.count; i++) {
                proxyModel.append(customModel.get(i);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)