我正在尝试自定义 QML 2.14 ComboBox,并且我确实遵循了自定义 ComboBox 文档,但我无法自定义 ComboBox -> Popup -> ListView ->“delegate”。
我想为组合框弹出窗口中显示的列表项使用不同的文本颜色。
ComboBox {
id: myComboBox
model: ["First", "Second", "Third"]
popup: Popup {
y: myComboBox.height - 1
width: parent.width
implicitHeight: contentItem.implicitHeight
contentItem: ListView {
clip: true
anchors.fill: parent
model: myComboBox.popup.visible ? myComboBox.delegateModel : null
ScrollIndicator.vertical: ScrollIndicator {}
delegate: Text {
width: parent.width
height: 30
text: "Test" // How to access flat model, modelData is null and model.get(index) is not allowed in .ui.qml
color: "#ffffff"
anchors.horizontalCenter: parent.horizontalCenter
anchors.left: parent.left
}
highlight: Rectangle { color: "yellow" }
}
}
}
但我总是在组合框弹出窗口中看到一些带有黑色文本的默认列表。
我也无法将突出显示应用于弹出窗口中选定的行。
组合框的模型是DelegateModel。这意味着委托已附加到模型。因此尝试设置 ListView 的委托不会有任何效果。但组合框有自己可以设置的
delegate
属性。
ComboBox {
delegate: Text {
width: parent.width
height: 30
text: modelData
color: "#ffffff"
anchors.horizontalCenter: parent.horizontalCenter
}
}