【Qt控件之微调框、进度条】QSpinBox、QDoubleSpinBox、QDial、QProgressBar介绍及使用

概述

QSpinBox类提供了一个微调框小部件。
在这里插入图片描述
QSpinBox适用于处理整数和离散的值集(例如,月份名称);对于浮点数值,请使用QDoubleSpinBox。
QSpinBox允许用户通过点击上下按钮或按键盘上的上下箭头来增加/减少当前显示的值,也可以手动输入值。微调框支持整数值,但可以通过validate()、textFromValue()和valueFromText()来扩展以使用不同的字符串。
每当值发生变化时,QSpinBox会发出两个valueChanged()信号,一个提供int类型的值,另一个提供QString类型的值。QString版本的函数提供带有前缀和后缀的值。值可以使用value()获取,并使用setValue()进行设置。
通过点击上下按钮或使用键盘加速键的上下箭头,可以按singleStep()的步长增加或减少当前值。如果要更改此行为,可以重新实现虚函数stepBy()。可以使用构造函数之一设置最小值、最大值和步长,并可以使用setMinimum()、setMaximum()和setSingleStep()在之后进行更改。
大多数微调框是定向的,但QSpinBox也可以作为循环微调框运作,即当范围为0-99且当前值为99时,如果setWrapping()设置为true,点击"上"将给出0。如果希望具有循环行为,请使用setWrapping()。
显示的值可以使用任意字符串在前面或后面注明,例如货币单位或计量单位。请参阅setPrefix()和setSuffix()。可以使用text()检索微调框中的文本(包括任何前缀和后缀),或者使用cleanText()检索文本(不包括前缀、后缀和前导或尾随的空格)。
通常希望在数值范围之外给用户提供特殊的选择(通常是默认选择)。有关如何在SpinBox中实现此功能,请参阅setSpecialValueText()。

QDoubleSpinBox类提供了一个带有浮点数的微调框小部件。
QDoubleSpinBox允许用户通过点击上下按钮或按键盘上的上下箭头来增加/减少当前显示的值,也可以手动输入值。微调框支持浮点数值,但可以通过validate()、textFromValue()和valueFromText()来扩展以使用不同的字符串。
每当值发生变化时,QDoubleSpinBox会发出两个valueChanged()信号,一个提供double类型的值,另一个提供QString类型的值。QString版本的函数提供带有前缀和后缀的值。值可以value()获取,并使用setValue()进行设置。
注意:QDoubleSpinBox会四舍五入数字,以便用当前精度显示。在小数位设置为2的QDoubleSpinBox中,调用setValue(2.555)会导致value()返回2.56。
通过点击上下按钮或使用键盘加速键的上下箭头,可以按singleStep()的步长增加或减少当前值。如果要更改此行为,可以重新实现虚函数stepBy()。可以使用构造函数之一设置最小值、最大值和步长,并可以使用setMinimum()、setMaximum()和setSingleStep()在之后进行更改。微调框默认精度为2位小数,但可以使用setDecimals()进行更改。
大多数微调框是定向的,但QDoubleSpinBox也可以作为循环微调框运作,即当范围为0.0-99.9且当前值为99.9时,如果setWrapping()设置为true,点击"上"将给出0。如果希望具有循环行为,请使用setWrapping()。
显示的值可以使用任意字符串在前面或后面注明,例如货币单位或计量单位。请参阅setPrefix()和setSuffix()。可以使用text()检索微调框中的文本(包括任何前缀和后缀),或者使用cleanText()检索文本(不包括前缀、后缀和前导或尾随的空格)。
通常希望在数值范围之外给用户提供特殊的选择(通常是默认选择)。有关如何在QDoubleSpinBox中实现此功能,请参阅setSpecialValueText()。

QDial类提供了一个圆形的范围控件(类似于速度表或电位器)。
QDial用于当用户需要在程序可定义的范围内控制一个值时,范围可以是循环的(例如,角度从0到359度),或者对话框的布局需要一个方形小部件。
由于QDial继承自QAbstractSlider,因此它的行为方式与滑块类似。当wrapping()为false时(默认设置),滑块和刻度盘之间实际上没有什么区别。它们共享相同的信号、槽和成员函数。使用哪个取决于用户的期望和应用程序的类型。
在移动滑块时,刻度盘一开始会连续发出valueChanged()信号;您可以通过禁用tracking属性使其较少地发出该信号。即使禁用了tracking,sliderMoved()信号也会连续发出。
当鼠标按钮按下和释放时,刻度盘还会发出sliderPressed()和sliderReleased()信号。请注意,刻度盘的值可以在不发出这些信号的情况下改变,因为也可以使用键盘和滚轮来更改值。
与滑块不同,QDial尝试绘制一个"漂亮"数量的刻度,而不是逐个绘制。如果可能,绘制的刻度数量每行步长为一个,但如果没有足够的像素来绘制每个刻度,QDial将跳过部分刻度以绘制出一个均匀的集合(例如,每个第二个或第三个刻度)。
与滑块一样,刻度盘将QAbstractSlider的setValue()函数作为slot提供。
刻度盘的键盘界面相当简单:左/上箭头和右/下箭头键通过定义的singleStep调整刻度盘的值,Page Up和Page
Down键通过定义的pageStep进行调整,Home和End键将值设置为定义的最小值和最大值。
如果使用鼠标滚轮调整刻度盘,增量值由wheelScrollLines和Step、pageStep中的较小值决定。

QProgressBar小部件提供了一个水平或垂直的进度条。
在这里插入图片描述
进度条用于向用户显示操作的进度,并向用户保证应用程序仍在运行。
进度条使用步骤的概念。您可以通过指定最小和最大可能的步骤值来设置它,当您稍后给出当前步骤值时,它将显示已完成的步骤的百分比。百分比是通过将进度(value() - minimum())除以maximum() - minimum()来计算的。 您可以使用setMinimum()和setMaximum()指定最小和最大步骤数。使用setValue()设置当前步骤数。进度条可以使用reset()重新设置到开始位置。
如果将最小值和最大值都设置为0,进度条会显示一个繁忙指示器,而不是步骤的百分比。例如,在使用QNetworkAccessManager下载无法确定下载项大小时,这很有用。

具体使用

  1. QSpinBox:
    QSpinBox是一个带有微调按钮的整数微调框。用户可以通过点击上下按钮或直接输入整数来调整值。

    示例代码:

    #include <QApplication>
    #include <QSpinBox>int main(int argc, char *argv[]) {QApplication app(argc, argv);QSpinBox spinBox;spinBox.setRange(0, 100); // 设置取值范围spinBox.setSingleStep(1); // 设置步长spinBox.setValue(50); // 设置初始值spinBox.show();return app.exec();
    }
    
  2. QDoubleSpinBox:
    QDoubleSpinBoxQSpinBox类似,但是它支持浮点数的微调。用户通过点击上下按钮或直接输入浮点数来调整值。

    示例代码:

    #include <QApplication>
    #include <QDoubleSpinBox>int main(int argc, char *argv[]) {QApplication app(argc, argv);QDoubleSpinBox doubleSpinBox;doubleSpinBox.setRange(0.0, 10.0); // 设置取值范围doubleSpinBox.setSingleStep(0.1); // 设置步长doubleSpinBox.setValue(5.0); // 设置初始值doubleSpinBox.show();return app.exec();
    }
    
  3. QDial:
    QDial是一个旋转式微调框,允许用户通过拖动或点击设置一个整数值。

    示例代码:

    #include <QApplication>
    #include <QDial>int main(int argc, char *argv[]) {QApplication app(argc, argv);QDial dial;dial.setRange(0, 100); // 设置取值范围dial.setValue(50); // 设置初始值dial.show();return app.exec();
    }
    
  4. QProgressBar:
    QProgressBar用于显示进度条,可以表示任务的完成百分比或其他进度信息。

    示例代码:

    #include <QApplication>
    #include <QProgressBar>
    #include <QTimer>int main(int argc, char *argv[]) {QApplication app(argc, argv);QProgressBar progressBar;progressBar.setRange(0, 100); // 设置范围progressBar.setValue(50); // 设置当前值progressBar.show();QTimer timer;QObject::connect(&timer, &QTimer::, [&progressBar]() {int value = progressBar.value();if (value < 100) {progressBar.setValue(value + 10);}});timer.start(1000); // 每秒更新一次进度条return app.exec();
    }
    

    在上面的示例代码中,创建了一个QProgressBar,并使用setValue来设置当前值。通过连接一个定时器的timeout信号来定期更新进度条的值。

结论

QSpinBox、QDoubleSpinBox、QDial和QProgressBar是Qt中常用的控件,以下它们的使用场景和技巧:

  • QSpinBox和QDoubleSpinBox:这两个控件用于让用户输入数字。QSpinBox用于输入整数,而QDoubleSpinBox用于输入浮点数。它们的使用场景包括需要用户输入数字参数的设置界面、数据统计等。使用技巧包括可以通过设置最小值、最大值和步长来限制用户的输入范围,以及可以通过设置前缀和后缀来美化输入数字的显示。
  • QDial:这个控件用于让用户通过旋转来选择数值。它的使用场景包括音响设备上的音量调节、汽车上的空调温度调节等。使用技巧包括可以通过设置最小值、最大值和值改变时的回调函数来控制旋钮的旋转范围和响应行为。
  • QProgressBar:这个控件用于显示任务的进度。它的使用场景包括文件下载、任务处理等的进度显示。使用技巧包括可以通过设置最小值、最大值和当前值来控制进度的显示,以及可以通过设置文本提示来显示进度的具体信息。

综上所述,这些控件在Qt中有着不同的使用场景和技巧,根据具体需求选择合适的控件并灵活运用,可以提高应用程序的用户体验和功能实现。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/163582.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《算法通关村第二关——终于学会链表反转了》

《算法通关村第二关——终于学会链表反转了》 今天学习链表反转 为什么反转这么重要呢&#xff1f;因为反转链表涉及结点的增加、删除等多种操作&#xff0c;能非常有效考察思维能力和代码驾驭能力。另外很多题目也都要用它来做基础&#xff0c; 例如指定区间反转、链表K个一…

网工内推 | IT主管、高级网工,上市公司,必须持有HCIE认证

01 深圳市飞荣达科技股份有限公司 招聘岗位&#xff1a;高级网络工程师 职责描述&#xff1a; 1. 参与、负责集团公司IT基础技术架构的规划设计、实施及维护、性能优化&#xff0c;包括数据中心机房、网络架构、虚拟化平台、信息安全设备及灾备系统等&#xff1b; 2. 负责集团…

Kubernetes技术与架构-服务

从软件系统架构设计分层的角度看&#xff0c;Kubernetes的Service是基于Pod的上层&#xff0c;业务应用部署在Pod中&#xff0c;使用Service绑定Pod部署的应用&#xff0c;Service可以对外或者对上层提供服务&#xff0c;当Pod集群在系统调度的过程中发生弹性伸缩的时候&#x…

基于模型预测人工势场的船舶运动规划方法,考虑复杂遭遇场景下的COLREG(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

openGauss学习笔记-103 openGauss 数据库管理-管理数据库安全-客户端接入之SSL证书管理-证书生成

文章目录 openGauss学习笔记-103 openGauss 数据库管理-管理数据库安全-客户端接入之SSL证书管理-证书生成103.1 操作场景103.2 前提条件103.3 自认证证书生成过程 openGauss学习笔记-103 openGauss 数据库管理-管理数据库安全-客户端接入之SSL证书管理-证书生成 openGauss默认…

【AIGC核心技术剖析】用于 3D 生成的多视图扩散模型

MVDream是一种多视图扩散模型,能够从给定的文本提示生成一致的多视图图像。多视图扩散模型从二维和三维数据中学习,可以实现二维扩散模型的泛化和三维渲染的一致性。我们证明了这样的多视图先验可以作为可推广的 2D 先验,与 3D 表示无关。它可以通过分数蒸馏取样应用于 2D 生…

tcp专题

目录 一.TCP的连接建立 1.1面向连接 1.2TCP报文结构 1.3TCP三次握手 1.4TCP的状态变化 1.5为什么必须是三次握手&#xff0c;而不是两次或者四次 二.TCP的连接断开 2.1TCP的"四次挥手 2.2TCP的状态变化 2.3为什么要有TIME_WAIT状态 2.4为什么TIME_WAIT状态的时…

开发者职场“生存状态”大调研报告分析 - 第四版

听人劝、吃饱饭,奉劝各位小伙伴,不要订阅该文所属专栏。 作者:不渴望力量的哈士奇(哈哥),十余年工作经验, 跨域学习者,从事过全栈研发、产品经理等工作,现任研发部门 CTO 。荣誉:2022年度博客之星Top4、博客专家认证、全栈领域优质创作者、新星计划导师,“星荐官共赢计…

《文献阅读》- 遗传算法作为量子近似优化算法的经典优化器(未完成)

文章目录 标题摘要关键词结论研究背景1.介绍 研究内容、成果3. 量子近似优化算法&#xff1a;基本概念及应用 常用基础理论知识2.相关工作酉矩阵 潜在研究点文献链接 标题 Genetic algorithms as classical optimizer for the Quantum Approximate Optimization Algorithm 参…

linux进阶(脚本编程/软件安装/进程进阶/系统相关)

一般市第二种,以bash进程执行 shelle脚本编程 env环境变量 set查看所有变量 read设置变量值 echo用于控制台输出 类似java中的sout declear/typeset声明类型 范例 test用于测试表达式 if/else case while for 函数 脚本示例 软件安装及进阶 fork函数(复制一个进程(开启一个进…

XMLHttpRequest的readyState状态值

readyState状态值 功能&#xff1a;在Ajax请求与服务器响应中&#xff0c;是通过XMLHttpRequest对象完成。而readyState状态值则是记录XMLHttpRequest对象在这个过程进行变化的状态。 readyState状态值readyState分别有5个状态值 0&#xff1a;请求未初始化&#xff1a;在未点击…

Python爬虫基础之Selenium详解

目录 1. Selenium简介2. 为什么使用Selenium&#xff1f;3. Selenium的安装4. Selenium的使用5. Selenium的元素定位6. Selenium的交互7. Chrome handless参考文献 原文地址&#xff1a;https://program-park.top/2023/10/16/reptile_3/ 本文章中所有内容仅供学习交流使用&…

【LeetCode刷题(数据结构与算法)】:合并两个有序链表

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的 **思路&#xff1a;定义一个头尾指针置为NULL while循环依次比较两个链表的值的大小 遍历链表 比较完数值大小过后连接到tail的尾部 然后各自的链表的节点的next指针指向下一…

数字秒表VHDL实验箱精度毫秒可回看,视频/代码

名称&#xff1a;数字秒表VHDL精度毫秒可回看 软件&#xff1a;Quartus 语言&#xff1a;VHDL 代码功能&#xff1a; 数字秒表的VHDL设计&#xff0c;可以显示秒和毫秒。可以启动、停止、复位。要求可以存储6组时间&#xff0c;可以回看存储的时间 本资源内含2个工程文件&am…

【AIGC核心技术剖析】Hotshot-XL 一种 AI 文本转 GIF 模型(论文 + 代码:经过训练可与Stable Diffusion XL一起使用)

Hotshot-XL 是一种 AI 文本转 GIF 模型,经过训练可与Stable Diffusion XL一起使用。 Hotshot-XL 可以使用任何经过微调的 SDXL 模型生成 GIF。这意味着两件事: 您将能够使用您可能想要使用的任何现有或新微调的 SDXL 模型制作 GIF。 如果您想制作个性化主题的 GIF,您可以…

【AIGC核心技术剖析】改进视频修复的传播和变压器(动态滤除环境中的物体)

基于流的传播和时空变压器是视频修复&#xff08;VI&#xff09;中的两种主流机制。尽管这些组件有效&#xff0c;但它们仍然受到一些影响其性能的限制。以前基于传播的方法在图像域或特征域中单独执行。与学习隔离的全局图像传播可能会由于光流不准确而导致空间错位。此外&…

2023_Spark_实验十八:安装FinalShell

下载安装包 链接&#xff1a;https://pan.baidu.com/s/14cOJDcezzuwUYowPsOA-sg?pwd6htc 提取码&#xff1a;6htc 下载文件名称&#xff1a;FinalShell.zip 二、安装 三、启动FinalShell 四、连接远程 linux 服务器 先确保linux系统已经开启&#xff0c;不然连接不上 左边…

华为eNSP配置专题-VRRP的配置

文章目录 华为eNSP配置专题-VRRP的配置0、参考文档1、前置环境1.1、宿主机1.2、eNSP模拟器 2、基本环境搭建2.1、基本终端构成和连接 2.VRRP的配置2.1、PC1的配置2.2、接入交换机acsw的配置2.3、核心交换机coresw1的配置2.4、核心交换机coresw2的配置2.5、配置VRRP2.6、配置出口…

Windows10 Docker 安装教程

Docker Desktop是什么&#xff1f; Docker Desktop是适用于Windows的Docker桌面&#xff0c;是Docker设计用于在Windows 10上运行。它是一个本地 Windows 应用程序&#xff0c;为构建、交付和运行dockerized应用程序提供易于使用的开发环境。Docker Desktop for Windows 使用 …

解决方案|智能制造升级,汽车行业借力法大大电子签进入“快车道”

《“十四五”智能制造发展规划》明确智能制造是制造强国建设的主攻方向&#xff0c;其发展程度直接关乎我国制造业质量水平。发展智能制造对于巩固实体经济根基、建成现代化产业体系、实现新型工业化具有重要作用。 规划明确指出要深入实施智能制造工程&#xff0c;着力提升创…