ComboBox
ImportStatement: import QtQuick.Controls 1.2
Since: Qt 5.1
Inherits: FocusScope
Properties
acceptableInput: bool
activeFocusOnPress: bool
count : int
currentIndex: int
currentText: string
editText :string
editable :bool
hovered : bool
model :model
pressed :bool
style :Component
textRole :string
validator :Validator
Signals
accepted()
activated(intindex)
Methods
find(text)
selectAll()
textAt(index)
DetailedDescription
可以分配给下拉选择框一个ListModel或模板属性的字符串列表。
ComboBox {
width: 200
model: [ "Banana","Apple", "Coconut" ]
}
下面的例子演示了如何使用ListModel。
ComboBox {
currentIndex: 2
model: ListModel {
id: cbItems
ListElement { text: "Banana";color: "Yellow" }
ListElement { text: "Apple";color: "Green" }
ListElement { text:"Coconut"; color: "Brown" }
}
width: 200
onCurrentIndexChanged:console.debug(cbItems.get(currentIndex).text + ", " +cbItems.get(currentIndex).color)
}
我们可以通过editable属性让下拉选择框变成可编辑的。一个可编辑的下拉选择框可自动基于可利用的模板完成文本。
下面的例子演示了通过onAccepted信号添加模板中的项。注意我们必须显式的防止重复。
另外注意下面的例子,我们人工给模板添加了内容,更多的时候,我们只是使用下拉选择框的可编辑功能,用来在下拉选择框中获得对应项。
ComboBox {
editable: true
model: ListModel {
id: model
ListElement { text:"Banana"; color: "Yellow" }
ListElement { text: "Apple";color: "Green" }
ListElement { text:"Coconut"; color: "Brown" }
}
onAccepted: {
if (editableCombo.find(currentText)=== -1) {
model.append({text: editText})
currentIndex =editableCombo.find(editText)
}
}
}
我们可以通过ComboBoxStyle创建ComboBox的样式。
PropertyDocumentation
acceptableInput: bool
这是只读的,如果组合框包含可编辑的文本框中的文本,则为真。如果验证器被设置,如果当前文本满足验证器或匹配最终的文本(不是中间的一段字符),则返回真。
这个QML属性在QtQuick.Controls 1.1被介绍。同时参阅validator和accepted。
activeFocusOnPress: bool
指明下拉选择框是否在按下的时候获得活跃的焦点。默认为假。
count : int
只读的,下拉选择框中组件的数目。这个QML属性在QtQuick.Controls 1.1中被介绍。
currentIndex: int
下拉选择框当前选择的组件的索引。设置它为-1将重置selection和清空文本标签。如果下拉选择框是可编辑的,我们还需要人工清除editText。
currentText: string
只读的,在下拉选择框当前选中组件的文本。注意currentText依赖于currentIndex,没有办法确认当onCurrentIndexChanged被调用时,currentText被更新。
editText :string
在可编辑的下拉选择框中被用户操作的编辑框。这个QML属性在QtQuick.Controls 1.1中被介绍。
editable :bool
下拉选择框是否可被用户编辑,默认为假,这个QML属性在QtQuick.Controls 1.1中被介绍。
hovered :bool
只读的,控制是否悬停在下拉选择框。
model :model
填充下拉选择框的模板,在下拉选择框初始化后改变模板,将重置currentIndex为0。
pressed :bool
只读的,按纽是否被按下。
style :Component
这个组件的样式。
textRole :string
用来填充下拉选择框的模板的功能。
validator :Validator
允许我们在可编辑的下拉选择框设置文本验证器。当设置了验证器,只有当enter被按下时,文本处于可接受状态,accepted信号才会发射。当前支持的验证器为IntValidator、DoubleValidator和RegExpValidator。下面展示了使用验证器的例子,它允许在文档域输入0到10的整数(英文文档是11到31,看代码是0到10)。只有当editable为真时,这个属性才是有用效的。
importQtQuick 2.2
importQtQuick.Controls 1.2
ComboBox {
editable: true
model: 10
validator: IntValidator {bottom: 0; top:10;}
focus: true
}
这个QML属性在QtQuick.Controls 1.1中被介绍。
SignalDocumentation
accepted()
在可编辑的下拉选择框中,当Enter键被按下,这个信号被发射。如果确认的文档不在当前的模板中,currentIndex被设置成-1,currentText被更新为确认文档。
注意:如果验证器被设置,只有当文本域为可接受状态,这个信号才被发射。
这个QML信号在QtQuick.Controls 1.1中被介绍。
activated(intindex)
index是新字符被接受时,在模板的索引或-1。
这个信号和currentIndex的改变相似,但它仅仅在用户改变下拉选择框时发射。这意味着应用程序改变下拉选择框不发射该信号。这个QML信号在QtQuick.Controls 1.1中被介绍。
MethodDocumentation
find( text)
寻找或返回给定文档的索引,如果匹配者没有发现,返回-1。搜索区分大小写。
selectAll()
所有的编辑文本被选择。
textAt(index)
返回给定索引的文本。如果无效的索引被提供,则返回空。