我们正在使用QtQuick.Controls 2.2并且由于各种原因无法降级。当我们使用QML中的Combobox
util时,它不会出现在1.4版本中引入的selectByMouse
字段中。
我们的要求是 - 能够选择组合框中的文字进行复制,并有一个下拉菜单。
如何解决此问题;还有其他选择吗?
答案 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
以上,因为需要存在属性editable
和editText
。然后,只要它是有效输入,它就会自动将编辑后的文本复制回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
}
}