【问题标题】:QML ComboBox - displayed text left-alignmentQML ComboBox - 显示的文本左对齐
【发布时间】:2021-09-06 06:50:06
【问题描述】:

在 QML 中,我的 ComboxBox 包含无法在文本字段中完全显示的大字项目。 打开下拉菜单时,项目在右端被剪切。为此,我使用elide: Text.ElideRight。这工作正常。 但是当我选择一个项目并且它显示在 ComboBox 上时,文本被“滚动”到右边,我看不到开头。但我必须看到显示文本的开头而不是结尾。

我对我的 contentItem-delegate 进行了几项尝试,但这仅适用于 DropDown-List 中的项目,而不适用于 Popup 关闭时的 ComboBox-own TextField。

所选项目的光标位于右侧,文本向右滚动。我希望它向左滚动,并可能在右端剪切。

【问题讨论】:

    标签: qt qml


    【解决方案1】:

    也许使用正确的contentItem?这对我有用。

    import QtQuick 2.5
    import QtQuick.Controls 2.2
    import QtQuick.Window 2.2
    
    Window {
        visible: true
        width: 300
        height: 300
    
        ComboBox {
            width: 300
    
            contentItem: Text {
                text: parent.displayText
                font.family: "Arial";
                font.pixelSize: 39;
                verticalAlignment: Text.AlignVCenter;
                horizontalAlignment: Text.AlignLeft;
                elide: Text.ElideRight
            }
    
            model: ListModel {
                id: model
                ListElement { text: "This is an example 0123456789 0123456789" }
                ListElement { text: "Another example with long text" }
                ListElement { text: "Last example" }
            }
        }
    }
    

    【讨论】:

    • 问题是,当我处于编辑模式时,文本会向右滚动。离开 ComboBox 的焦点后,文本将保留在那里。我现在有一个小解决方法:从下拉列表中选择一个项目或在 TextField 中输入后,我将 Combo 的 editable 设置为 false。然后它明显跳出焦点,文本左对齐。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-16
    • 2015-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多