QML ComboBox 项目不显示正确的文本

Posted

技术标签:

【中文标题】QML ComboBox 项目不显示正确的文本【英文标题】:QML ComboBox item does not display correct text 【发布时间】:2018-11-23 16:31:43 【问题描述】:

组合框的某些字符似乎有问题,至少我检测到当我们转到项目列表时,“&”显示为“_”。 我们如何解决这个问题?

一个例子:

ComboBox 
    id: combobox
    textRole: "text"
    Layout.fillWidth: true

    model: ListModel 
        dynamicRoles: true
    

    Component.onCompleted: 
        reload()
    

    Connections 
        target: trans // this is a translator from a git project you are referring to
        onLanguageChanged: 
            combobox.reload()
        
    

    function reload() 
        var i = combobox.currentIndex
        combobox.model = [
                    text: qsTr("apple & orange")
                ]
        combobox.currentIndex = i
    

这是在 QT 5.11.2 上

如果我转义文本 text: qsTr("apple && orange")

发生这种情况

【问题讨论】:

【参考方案1】:

Qt 使用& 符号为特定的 UI 元素指定助记键,因此使用该符号。

只需改用&&

至于显示文本错误,有一个简单的方法可以解决:

  ComboBox 
    model: ["a and b", " a && b"]
    displayText: currentText.replace("&&", "&")
  

【讨论】:

对列表中的项目有效,但组合框中的选定项目被窃听。如何修复?看我的图片。

以上是关于QML ComboBox 项目不显示正确的文本的主要内容,如果未能解决你的问题,请参考以下文章

如何正确地将 ComboBox 的模型从 python (pyQt5) 传递给 QML?

如何在 QML 的自定义 ComboBox 中突出显示所选项目?

如何在 WPF ComboBox 中正确显示过长的文本

WPF ComboBox 最初以错误的大小显示第一个项目

解决QML开发中ComboBox中一个已选择项没有清除的问题

WPF ComboBox 绑定到不显示所选项目文本的用户控件集合