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

本文主要是介绍【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中有着不同的使用场景和技巧,根据具体需求选择合适的控件并灵活运用,可以提高应用程序的用户体验和功能实现。

这篇关于【Qt控件之微调框、进度条】QSpinBox、QDoubleSpinBox、QDial、QProgressBar介绍及使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/243727

相关文章

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

pdfmake生成pdf的使用

实际项目中有时会有根据填写的表单数据或者其他格式的数据,将数据自动填充到pdf文件中根据固定模板生成pdf文件的需求 文章目录 利用pdfmake生成pdf文件1.下载安装pdfmake第三方包2.封装生成pdf文件的共用配置3.生成pdf文件的文件模板内容4.调用方法生成pdf 利用pdfmake生成pdf文件 1.下载安装pdfmake第三方包 npm i pdfma

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]