• ComboBox填充数据模型,数据模型通常是JavaScript数组,ListModel或者是整数,但是也支持其他类型的数据模型。另外,ComboBox还可以编辑
  • 属性
    acceptableInput : bool,此属性控制组合框是否包含可编辑文本字段中的可接受文本
    count : int,组合框中的项目数
    currentIndex : int,保存组合框中当前项的索引,只读
    currentText : string,组合框中当前项的文本,只读
    delegate : Component,包含一个委托,该委托在组合框弹出窗口中显示项目
    displayText : string,保存组合框按钮上显示的文本
    down : bool,保存组合框按钮是否在视觉上向下
    editText : string,指示将文本保存在可编辑组合框的文本字段中
    editable : bool,控制组合框是否可编辑
    flat : bool,控制组合框按钮是否平坦
    highlightedIndex : int,表示组合框弹出列表中突出显示项的索引,,只读
    indicator : Item,包含拖放指示器项
    inputMethodComposing : bool,表示可编辑组合框中是否具有部分文本输入采用某种输入方法
    inputMethodHints : flags,为输入法提供有关组合框的预期内容及其操作方式的提示
    model : model,控制着为组合框提供数据的模型
    popup : Popup,包含弹出窗口
    pressed : bool,代表组合框按钮是否以物理的方式按下
    textRole : string,表示用于填充组合框的模型角色
    validator : Validator,包含可编辑组合框的输入文本验证程序
  • 方法
    void decrementCurrentIndex()
    如果弹出列表可见,则递减组合框的当前索引或突出显示的索引
    int find(string text, flags)
    返回指定文本的索引,如果未找到匹配项,则返回 -1
    void incrementCurrentIndex()
    如果弹出列表可见,则增加组合框的当前索引或突出显示的索引
    void selectAll()
    选择组合框的可编辑文本字段中的所有文本
    string textAt(int index)
    返回指定索引的文本,如果索引超出范围,则返回空字符串
  • 信号
  • void accepted()
    在可编辑的组合框上按下 Return 或 Enter 键时会发出此信号。如果输入的字符串不在模型中,则将currentIndex 设置为 -1,并且 currentText 将相应地更新。注意:如果组合框上设置了 validator,则只有在输入处于 acceptable 状态时才会发出信号。
  • void activated(int index)
    用户在弹出窗口进行选择项目激活索引处的项目时,将发出此信号。
  • void highlighted(int index)
    当弹出列表中索引处的项目被用户突出显示时,将发出此信号

填充整数值的ComboBox

当我们进行在弹出窗口做出选择时,会触发activated信号,相应的在信号处理函数onActivated中,输出displayText(ComboBox上显示的文本)

import QtQuick 2.9
import QtQuick.Window 2.2
import QtQuick.Controls 2.2Window {visible: truewidth: 640height: 480title: qsTr("test")color: "gray"ComboBox{anchors.centerIn: parentmodel:[1,2,3,4,5,6,7,8,9]onActivated: {console.log(displayText)}}
}

填充ListModel的ComboBox

ComboBox为可编辑,当可编辑的组合框上按下 Return 或 Enter 键时会发出accepted()信号,所以在其信号处理函数中设置将新输入的数据添加进模型的末尾。

  • 下图的【Four】【Five】是在ComboBox编辑后按【Enter】键后,在model模型末尾添加了数据
import QtQuick 2.9
import QtQuick.Window 2.2
import QtQuick.Controls 2.2Window {visible: truewidth: 640height: 480title: qsTr("test")color: "gray"ComboBox {editable: trueanchors.centerIn: parentmodel: ListModel {id: numListElement { text: "One" }ListElement { text: "Two" }ListElement { text: "Three" }}onAccepted: {if (find(editText) === -1)num.append({text: editText})}}
}
  • 使用具有多个命名角色的模型时,为了显示其文本和代理实例,必须使用特定的 textRole 配置 ComboBox。 如下使用了2个命名角色key和value
import QtQuick 2.9
import QtQuick.Window 2.2
import QtQuick.Controls 2.2
Window {visible: truewidth: 640height: 480title: qsTr("test")color: "gray"ComboBox {textRole: "key"model: ListModel {ListElement { key: "One"; value: 123 }ListElement { key: "Two"; value: 456 }ListElement { key: "Three"; value: 789 }}}
}

自定义ComboBox

  • ComboBox可视项组成:背景项background,内容项contentitem,弹出窗口popup,指示器indicator和委托项delegate
    indicator自定义需要用到画布Canvas进行重绘比较复杂

import QtQuick 2.9
import QtQuick.Window 2.2
import QtQuick.Controls 2.2Window {visible: truewidth: 640height: 480title: qsTr("test")color: "gray"ComboBox {anchors.centerIn: parentid: controlmodel: ["One", "Two", "Three"]delegate: ItemDelegate { //呈现标准视图项 以在各种控件和控件中用作委托width: control.widthcontentItem: Text {text: modelData   //即model中的数据color: "green"font: control.fontverticalAlignment: Text.AlignVCenter}}contentItem: Text { //界面上显示出来的文字leftPadding: 5 //左部填充为5text: control.displayText //表示ComboBox上显示的文本font: control.font    //文字大小color: control.pressed ? "orange" : "black"   //文字颜色verticalAlignment: Text.AlignVCenter  //文字位置}background: Rectangle {   //背景项implicitWidth: 120implicitHeight: 40color: "green"border.width: 1radius: 2}popup: Popup {    //弹出项y: control.heightwidth: control.widthimplicitHeight: contentItem.implicitHeightpadding: 1//istView具有一个模型和一个委托。模型model定义了要显示的数据contentItem: ListView {   //显示通过ListModel创建的模型中的数据clip: trueimplicitHeight: contentHeightmodel: control.popup.visible ? control.delegateModel : null}background: Rectangle {border.color: "green"radius: 2}}}
}

qml 组合框ComboBox相关推荐

  1. JQuery Easy Ui 可装载组合框 - ComboBox

    可装载组合框 - ComboBox 继承自$.fn.combo.defaults,通过$.fn.combobox.defaults覆盖默认值 combobox显示的是一个可以编辑的文本框和一个下拉列表 ...

  2. Python之tkinter 组合框 Combobox

    文章目录 组合框 Combobox 简介 建立 Combobox 设置默认选项 current() 获得目前选项 get() 绑定 Combobox 组合框 Combobox 简介 Combobox ...

  3. QML_组合框ComboBox

    QML_组合框ComboBox ComboBox的属性: 1.acceptableInput : bool,此属性控制组合框是否包含可编辑文本字段中的可接受文本 2.count : int,组合框中的 ...

  4. C#学习笔记:Windows窗体编程——组合框ComboBox的使用

    参考书目:C#6.0学习笔记--从第一行C#代码到第一个项目设计(作者周家安)P331 学习内容:组合框ComboBox的使用.从ComboBox中取出选择项,并显示在另外的label控件上 第一步: ...

  5. 组合框ComboBox

    组合框(ComboBox)的本质是文本框(TextBox)和列表框(ListBox)的组合. 组合框的属性方法和事件与文本框和列表框的大多数用法一致.例如,List属性.ListIndex属性.Cle ...

  6. VC组合框ComboBox控件用法

    1.关于CComboBox在对话框中没有下拉项目的问题 答: 资源编辑器中对话框中CComboBox组件的垂直范围拉大了下,就看见字体了.先点击右边向下的箭头,然后会出现上下可调的双向箭头,拖拉即可. ...

  7. [转载]C#中,让组合框(ComboBox)支持拼音首字母检索筛选

    通过继承系统的ComboBox,写一个新控件ComboBoxEx,重写它的焦点以及文本更新事件,就可以轻松实现拼音首字母检索了.例如:输入 gd ,就可以出现"广东".  1usi ...

  8. c#中组合框comboBox 运行后禁止手写输入

    将DropDownStyle 的属性改为DropDownList.

  9. vb.net datagridview数据批量导入sql_【自学C#】|| 笔记 44 ComboBox:组合框控件数据绑定...

    一.ComboBox:组合框控件数据绑定 在 Windows 应用程序中很多控件都提供了 DataSource 属性,并将 DataSet 或 DataTable 的值直接赋给该属性,这样在控件中即可 ...

最新文章

  1. Fedora开启FTP服务
  2. mysql添加普通用户用于管理单一数据库
  3. pymssql mysql_Python利用pymssql访问mysql数据库
  4. Linux Kernel Git国内镜像源
  5. Hbase高级功能过滤(Filter)
  6. SLAM 无人车融合 IMU 前与 融合 IMU 后的实测效果演示
  7. 解决:android源码同步repo sync 时出现的fatal:duplicate path错误
  8. rust第三人称视角插件_第三人称视角ThirdPerson Everything Mod
  9. 多模块顺序_广东省考行测时间如何分配?答题顺序的建议?
  10. Excel如何按照颜色排序
  11. T和?是什么 ?有什么区别?
  12. 微信开发工具调试公众号
  13. Excel分组行转列
  14. 道阻且长之C++对象模型
  15. 非线性规划求解_突破 | 杉数求解器COPT首发求解内点法
  16. 美式英语音标词对照表
  17. 简述什么是图灵机_图灵机的工作原理是什么
  18. 为什么这些UI设计很糟糕?什么是好的UI设计?
  19. 2022年PMI-ACP考试大纲是什么?快来看
  20. HSDPA建网及商用策略(转)

热门文章

  1. android ios av tv,iOS AVPlayerItem
  2. 泰山OFFICE技术讲座:字符宽度、中文标宽、字符间距
  3. 2.PRT文件的解析
  4. 无法将值vmware-tray.exe写入注册表
  5. android 狂野飙车8更新,安卓、Win10 Mobile版《狂野飙车8》更新:加入保时捷家族...
  6. 基础1-单位长度的解析
  7. 基于python中cv2库的图像分割
  8. IPFS、区块链的libp2p
  9. 直播app源代码,android弹框的几种操作
  10. Tech.Ed 2011微软技术大会(三)之课程回顾