当前位置: 首页 > news >正文

QML学习笔记(三十六)QML的ComboBox

前言

ProgressBar是一个用于显示进度条的控件,在QWidget中亦有实现,主要是为了显示某种工作流的当前进度,比如下载文件、上传文件等,特别适合有百分比进度显示的需求。

一、了解ProgressBar

查阅帮助文档:
在这里插入图片描述
翻译一下:

详细描述

ProgressBar指示操作的进度。该值应定期更新。范围由from和to定义,两者都可以包含任何值。
ProgressBar还支持一种特殊的不确定模式,例如,当无法确定正在下载的项目的大小,或者下载进度因网络断开而中断时,这种模式非常有用。不确定模式类似于BusyIndicator。两者都可以用来指示背景活动。主要区别在于视觉效果,ProgressBar还可以显示具体的进度(当可以确定时)。由于视觉差异,不确定的进度条和繁忙指示器适合用户界面中的不同位置。不确定进度条的典型位置:
·在工具栏的底部
·在页面内容中内联
·在ItemDelegate中显示特定项目的进度

二、代码测试

1.用按钮点击来触发修改

Button{text: "Start"anchors.horizontalCenter: parent.horizontalCenteronClicked: function(){progressBarId1.value = 75}
}
ProgressBar{id: progressBarId1from: 1to: 100indeterminate: trueanchors.horizontalCenter: parent.horizontalCenter
}

请添加图片描述
indeterminate: true表示当前是不确定的进度条,默认显示那种走马灯形式的进度。
这里通过一个按钮来修改进度,需要注意置位indeterminate,否则进度显示不出来。
2.用旋扭来触发修改

Dial{id: dialIdfrom: 1to: 100value: 40anchors.horizontalCenter: parent.horizontalCenteronValueChanged: function(){// ...progressBarId.value = value}
}
ProgressBar{id: progressBarIdfrom: 1to: 100value: 40anchors.horizontalCenter: parent.horizontalCenteronValueChanged: function(){console.log("Current value: " + visualPosition)console.log("Current value: " + value)}
}

Dial是一个旋扭组件,因为不太常用,我就没怎么介绍,它的写法几乎和ProgressBar一样,可以设置开始和结束的值,然后设置中间的当前值。只不过它是一个可以主动操作旋转的控件而ProgressBar是被动进行修改的。
这里模拟用Dial的旋转,来间接控制ProgressBar的进度显示。
请添加图片描述
打印也有很多:
在这里插入图片描述

console.log("Current value: " + visualPosition)
console.log("Current value: " + value)

很显然,value是我们设置的值,但必须介于from和to之间,因为这是一个范围;visualPosition则是小数形式的百分比,已经自动给我们计算出来了,如果需要这个数值的话,可以留意这个属性。

三、进度百分比文字显示

印象中,QWidget中的QProgressBar是有百分比文字的显示的,通常在进度条的右侧,这样的效果会更加直观。只可惜,qml中的百分比文字似乎并没有给我们实现。
搜索了解后发现,qml中会给我们预留visualItem 来自定义实现样式,但这是5.15之后才有的,我是5.14所以没法测试了。
建议的话,还是另外连接一个text或label吧,反正也不难。

四、总结

进度条也算是一种常用的控件,它更多是被动地显示进度,用于和用户之间更加高效和直接的交互体验。与之相对的我觉得还有拖动条,它用于进度条之间的主动拉动,比如音量控制,视频播放控制,显示范围拉伸等等。这个将在下一节介绍。

http://www.dtcms.com/a/481664.html

相关文章:

  • 媒介宣发的技术革命:Infoseek如何用AI重构企业传播全链路
  • uniapp开发小程序
  • 浦江县建设局网站国家企业信息信用信息公示网址
  • 2025年燃气从业人员考试真题分享
  • SuperMap iServer 数据更新指南
  • C++基础:(十三)list类的模拟实现
  • 【网络编程】从数据链路层帧头到代理服务器:解析路由表、MTU/MSS、ARP、NAT 等网络核心技术
  • 北京网站seowyhseo网站模板但没有后台如何做网站
  • 对接世界职业院校技能大赛标准,唯众打造高质量云计算实训室
  • 利用人工智能、数字孪生、AR/VR 进行军用飞机维护
  • [特殊字符] Maven 编译报错「未与 -source 8 一起设置引导类路径」完美解决方案(以芋道项目为例)
  • 【CV】泊松图像融合
  • 云智融合:人工智能与云计算融合实践指南
  • Maven创建Java项目实战全流程
  • 泉州市住房与城乡建设网站wordpress弹出搜索
  • [创业之路-691]:历史与现实的镜鉴:从三国纷争到华为铁三角的系统性启示
  • 时序数据库选型革命:深入解析Apache IoTDB的架构智慧与实战指南
  • 南通网站制作建设手机网页设计软件下载
  • OpenAI推出即时支付功能,ChatGPT将整合电商能力|技术解析与行业影响
  • 小杰深度学习(seventeen)——视觉-经典神经网络——MObileNetV3
  • 线性代数 | 要义 / 本质 (下篇)
  • C# 预处理指令 (# 指令) 详解
  • 有趣的机器学习-利用神经网络来模拟“古龙”写作风格的输出器
  • AI破解数学界遗忘谜题:GPT-5重新发现尘封二十年的埃尔德什问题解法
  • ui网站推荐如何建网站不花钱
  • Java版自助共享空间系统,打造高效无人值守智慧实体门店
  • 《超越单链表的局限:双链表“哨兵位”设计模式,如何让边界处理代码既优雅又健壮?》
  • HENGSHI SENSE 6.0技术白皮书:基于HQL语义层的Agentic BI动态计算引擎架构解析
  • C#实现MySQL→Clickhouse建表语句转换工具
  • 禁止下载app网站东莞网