在Q
ML
中,在ComboBox中使用ListModel充当其模型是一种常见的方法。但是,当涉及到嵌套的ListModel时,会出现问题。在此情况下,所需的解决方法是使用嵌套的JS对象来替换嵌套的ListModel。这样做可以避免嵌套ListModel所带来的问题,同时还可以实现ComboBox的需求。
以下是一个示例,其中使用JS对象来代替嵌套的ListModel:
import QtQuick 2.12
import QtQuick.Controls 2.12
Item {
property var dropdownData: [
"header": "Fruit",
"items": [
{"name": "Apple", "value": "A"},
{"name": "Banana", "value": "B"},
{"name": "Cherry", "value": "C"}
"header": "Vegetable",
"items": [
{"name": "Carrot", "value": "D"},
{"name": "Eggplant", "value": "E"}
ComboBox {
model: dropdownData
delegate: ItemDelegate {
text: model.header
width: parent.width
contentItem: Row {
spacing: 10
Repeater {
model: model.items
label: Item {
width: 30
height: 30
Rectangle {
color: "lightgray"
anchors.fill: parent
Text {
anchors.centerIn: parent
text: modelData.name
在此示例中,我们使用了一个名为“dropdownData”的JS对象来充当ComboBox的模型。该对象包含了两个名为“header”和“items”的属性。每个属性均为一个表示不同选项的数组。ComboBox的Delegate部分被重写为一个可以渲染这些数组的Repeater。每