由于项目需要,需要设计一个可以多选的ComboBox,看了一下文档,发现QML自带的ComboBox确实无法多选。看了一下ComboBox的实现,发现弹出的下拉菜单是用Menu实现的,看来只能自己重写了,毕竟Menu本身就是无法多选的!代码不多,直接看实现吧!

import QtQuick 2.5
import QtQuick.Controls 1.4
import QtQuick.Controls.Styles 1.4Item{id:rootimplicitWidth: 150implicitHeight: 30property alias model: lv.modelproperty var indexs: []property var m_text: ""function removeValue(arr,val) {      //删除数组中指定的内容arr数组,val内容for (var i = 0; i < arr.length; i++) {if (arr[i] == val) {arr.splice(i, 1)return arr;}}}Button{id: btnanchors.fill: parentText{anchors.fill: parentanchors.margins: 5anchors.rightMargin: 30text: m_texthorizontalAlignment: Text.AlignHCenterverticalAlignment: Text.AlignVCenterfont.pointSize: 12clip: trueelide: Text.ElideMiddle}onClicked: {sv.visible = !sv.visible;}Image{anchors.right: parent.rightanchors.top: parent.topwidth: root.heightheight:root.heightsource:"换成自己下拉按钮图片"}}Component{id: m_delRectangle{id:rectcolor:"white"implicitWidth: 150implicitHeight: 30property bool isSelect: falseText{anchors.fill: parenthorizontalAlignment:Text.AlignHCenterverticalAlignment: Text.AlignVCenterfont.pointSize: 15text: label}MouseArea{anchors.fill: parenthoverEnabled: trueonEntered: {if(!isSelect){rect.color = "#CDDCFE";}}onExited: {if(!isSelect){rect.color = "white"}}onClicked: {rect.isSelect = !rect.isSelect;if(!rect.isSelect){         //取消某项rect.color = "white"//删除文本中指定的字符串var arr = m_text.split(",");arr = removeValue(arr,label)m_text = arr.join(",");//删除数组中记录指定的内容indexs = removeValue(indexs,index);}else{                       //选择某项rect.color = "#F9E977"if(m_text.length == 0){m_text += label;}else{m_text += "," + label;}indexs.push(index)}}}}}ScrollView{id:svanchors.top:btn.bottomanchors.left: parent.leftwidth: parent.widthheight: 300visible: falseListView{id: lvdelegate:m_delanchors.fill: parent}}
}

有个地方和官方的ComboBox有些区别,就是需要点击按钮才会将下拉列表收起来,不知道怎样才能实现点击其他位置,关闭下拉列表,有知道的朋友告诉我一声,谢啦!

转载于:https://blog.51cto.com/gaohaifeng/1795667

QML 可以多选ComboBox的实现相关推荐

  1. Qml控件:ComboBox

    Qml控件:ComboBox ComboBox默认状态 定制ComboBox 1.定制框架 2.定制指示器 3.定制背景 4.定制内容 5.定制弹框 6.定制弹框Item 7.弹框项的点击 8.定制删 ...

  2. Flex 扩展combobox 实现复选功能

    原文:Flex 扩展combobox 实现复选功能 前段时间,老大召唤,给个任务,研究一下flex的combobox控件 实现复选功能(flex自带的combobox控件不可以复选),小兵能力有限,哪 ...

  3. QML ComboBox 图片加文字

    Qml 目前版本的 ComboBox,不支持设置下拉菜单字体,也不支持下拉菜单带图片.在一番搜索加调整后,我写成下面的代码,可以满足这个功能. 只是调整字体,请见ComboxBox 调整字体 Rect ...

  4. 7.25 Ext JS下拉单选框(Combobox,TagFied)使用及疑难问题解决

    Ext JS下拉框字段组件 在Ext JS中,下拉框选择的字段组件主要有两种, 分别是Combobox 和TagField, 这两种都支持单选和多选, 呈现的效果如下: Combobox 对应的类是: ...

  5. EasyUI下combobox中添加checkbox,并输入全拼简拼进行筛选显示

    开发任务:combobox中对输入值进行全拼简拼的搜索筛选显示,并且可以多选,取消选择,重复搜索,于是简单的考虑了如下js操作,应该会有更好的,但也是一种方法吧.做个记录,便于后期查阅查考. 1.ht ...

  6. 解决Qt问题:无法连接到进程内QML调试器

    问题: 由于在Qt5以上版本默认开启QML调试器造成的.用于告知用户,这将打开一个到运行QML的Javascript解释器的端口,以便从中获得调试输出.显然,这会造成一个安全漏洞,所以在不安全的地方使 ...

  7. 计算机命令通配符,Windows的命令行怎么支持通配符

    Windows 搭建 .NET 跨平台环境并运行应用程序 写在前面 阅读目录: Install .NET Version Manager (DNVM) Install .NET Core Execut ...

  8. C++界面开发框架Qt新手入门指南 - 如何创建Qt Quick UI项目

    Qt技术交流群:166830288      欢迎一起进群讨论 Qt Quick UI Prototype项目可用于测试或制作用户界面原型,或者用于为QML编辑设置单独的项目.您不能将它们用于应用程序 ...

  9. ComboxBox 调整字体

    Qml 目前版本的 ComboBox,不支持设置下拉菜单字体在一番搜索加调整后,完成下面的代码,可以满足这个功能. 如果想实现ComboBox带图片+字体,请见QML ComboBox 图片加文字 这 ...

最新文章

  1. 一年春事,桃花红了谁……
  2. Django部署(Apache)
  3. php 取绝对值(php自带函数可以直接取)
  4. @import注解使用
  5. 009_Gson版本支持
  6. leetcode 反转字符串
  7. 快开宝PDA开单器出入库扫码:让批发零售变得更简单
  8. 应用程序自动更新组件GeneralUpdate3.2.1发布
  9. hsv白色h值是多少_ShaderToy系列:HSV
  10. was 连接池满了怎么重启_HttpClient 连接池设置引发的一次雪崩!
  11. Nginx 下部署 HTTPS 与安全调优
  12. 【网络工程师必备】怎么使用route命令实现内外网切换
  13. 关于速算:2^n,2的各个阶乘的记忆方法
  14. Pytorch介绍以及基本使用
  15. 2021年中国高空作业平台行业发展现状及竞争格局分析,国产品牌异军突起「图」
  16. 【数仓】浅谈数仓建模的方法
  17. 计算机用户被停用,Win10电脑中Administrator账户被停用如何解决
  18. 《MLB棒球创造营》:走近棒球运动·明尼苏达双城队
  19. 哪个linux系统最安全,Linux系统是不是最安全的系统?
  20. 针对计算机网络或者计算,北京自考“计算机网络与通信”计算题攻略(2)

热门文章

  1. .net下调用WebService
  2. pip install 报错 Error: Cannot uninstall ‘pyparsing‘ 的解决方法
  3. Jmeter中的几种协议
  4. java关闭文件句柄_java-JAI关闭文件句柄为时过早吗?
  5. 各层作用_OSI模型中各层在通信中的作用
  6. 学Web前端开发需要哪些基础?零基础小白该怎么入行?
  7. web前端新人第一课:html基础知识,你能学会吗?
  8. 前端工作、学习中常用工具推荐
  9. I - 免费馅饼-图画详细解析
  10. 最好用的营养计算机软件,营养计算器(标准版)