QML QtQuick.Controls 2.2 Combobox没有selectByMouse;有什么选择?

时间:2017-09-15 12:27:16

标签: qt qml mouse options qtquickcontrols2

我们正在使用QtQuick.Controls 2.2并且由于各种原因无法降级。当我们使用QML中的Combobox util时,它不会出现在1.4版本中引入的selectByMouse字段中。

我们的要求是 - 能够选择组合框中的文字进行复制,并有一个下拉菜单。

如何解决此问题;还有其他选择吗?

2 个答案:

答案 0 :(得分:5)

您可以使用您选择的属性将contentItem更改为TextField。这可能如下所示:

ComboBox {
    id: control
    model: ['Hallo', 'Hello', 'Sallut', 'Godan Dagin']
    editable: true

    contentItem: TextField {
        text: control.editText
        selectByMouse: true
    }
}

请注意,如果您修改文字,editText不是模型的元素,则不会接受为displayText

这适用于QtQuick.Controls 2.2以上,因为需要存在属性editableeditText。然后,只要它是有效输入,它就会自动将编辑后的文本复制回displayText 对于早期版本,这很难实现。

答案 1 :(得分:3)

从Qt 5.9 / Quick Controls 2.2开始,如果ComboBox设置为TextField,则ComboBox现在包含editible以显示当前文字。 TextField确实具有您需要的selectByMouse属性,只有它不作为ComboBox的属性公开,因此QML无法访问它。但是,它可以在javascript中访问,例如来自Component.onCompleted附加信号处理程序。

例如:

ComboBox {
    editable: true

    model: ListModel {
        id: model
        ListElement { text: "Banana" }
        ListElement { text: "Apple" }
        ListElement { text: "Coconut" }
    }

    Component.onCompleted: {
        contentItem.selectByMouse = true
    }
}