如何自定义 ComBox 弹出项目

问题描述 投票:0回答:1

我正在尝试自定义 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" } 
      }
   }
}

但我总是在组合框弹出窗口中看到一些带有黑色文本的默认列表。

我也无法将突出显示应用于弹出窗口中选定的行。

qt combobox qml qtquick2
1个回答
1
投票

组合框的模型是DelegateModel。这意味着委托已附加到模型。因此尝试设置 ListView 的委托不会有任何效果。但组合框有自己可以设置的

delegate
属性。

ComboBox {
    delegate: Text {
        width: parent.width
        height: 30
        text: modelData
        color: "#ffffff"
        anchors.horizontalCenter: parent.horizontalCenter
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.