Qt QSpinBox微调框控件

文章目录

  • 1 属性和方法
    • 1.1 值
    • 1.2 步长
    • 1.3 循环
    • 1.4 加速
    • 1.5 前缀和后缀
    • 1.6 信号和槽
  • 2 实例
    • 2.1 布局
    • 2.2 代码实现

微调框,允许用户按照一定的步长,来增加或减少其中显示的数值

修改微调框数值的方式包括:

  • 单击右侧的向上/向下按钮
  • 按键盘的向上/向下键
  • 微调框获取焦点时,通过鼠标滚轮的上下滚动
  • 当然了,也允许用户手动输入

其中 :

  • SpinBox-用于整数的显示和输入
  • DoubleSpinBox-用于浮点数的显示和输入

它们都是QAbstractSpinBox的子类,具有大多数相同的属性,只是参数类型不同(一个int,一个double)

1 属性和方法

QSpinBox有很多属性,完整的可查看帮助文档。这里以QSpinBox为例,列出常用的属性和方法:

1.1 值

微调框和值相关的属性包括:当前值、最大值、最小值

// 获取和设置当前值
int value() const;
void setValue(int val);

// 获取和设置最大值
int maximum() const;
void setMaximum(int max);

// 获取和设置最小值
int minimum() const;
void setMinimum(int min);

// 一次设置最大值和最小值
void setRange(int minimum, int maximum);

1.2 步长

步长是指按右侧上下调整按钮时的单步改变值,也就是按一次,增加或减少的值

// 获取和设置步长
int singleStep() const;
void setSingleStep(int val); 

1.3 循环

wrapping 属性用于设置是否允许循环

比如范围设置为0-99

  • 当数值达到99时,再点击向上的按钮,此时数值会变为0
  • 数值达到0时,再点击向下的按钮,此时数值会变为99
// 获取和设置是否允许循环
bool warpping() const;
void serWrapping(bool w);

1.4 加速

用于设置数值增加和减少的速度

如果设置为true,随着长按向上/向下箭头时间的增加,数值会加速增加/减少。

// 获取和设置是否允许加速
bool isAccelerated() const;
void serAccelerated(bool on);

1.5 前缀和后缀

用于设置微调框的前缀和后缀显示

比如,如果微调框中显示的是重量,可以添加一个KG的后缀,如果微调框中显示的是单价,可以添加一个的前缀

// 获取和设置前缀
QString prefix() const;
void serPrefix(const QString &prefix);

// 获取和设置后缀
QString suffix() const;
void setSuffix(const QString &suffix);

1.6 信号和槽

当微调框中的数值发生变化时,会发射valueChanged信号

void valueChanged(int i);

2 实例

该案例演示,当单价和重量变化时,实时显示计算出的总价

在这里插入图片描述

2.1 布局

在Ul设计师界面,拖拽对应的控件,修改显示的文字、控件的name,然后完成布局

在这里插入图片描述

2.2 代码实现

// 在Widget中
#include "widget.h"

#include "ui_widget.h"

Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) {
    ui->setupUi(this);
    // 1. 设置单价
    ui->dsbPrice->setMaximum(99.99);
    ui->dsbPrice->setMinimum(1.00);
    // ui->dsbPrice->setRange(1.00, 99.99);

    // 设置前缀
    ui->dsbPrice->setPrefix("¥");

    // 设置步长
    ui->dsbPrice->setSingleStep(0.50);

    // 设置加速
    ui->dsbPrice->setAccelerated(true);

    // 设置到了最后再增加就回到初始值
    ui->dsbPrice->setWrapping(true);

    // 1. 设置重量
    ui->sbWeight->setMaximum(200);
    ui->sbWeight->setMinimum(100);

    // 设置前缀
    ui->sbWeight->setSuffix(" KG");

    // 设置步长
    ui->sbWeight->setSingleStep(1);

    // 设置加速
    ui->sbWeight->setAccelerated(true);

    // 设置到了最后再增加就回到初始值
    ui->sbWeight->setWrapping(true);
}

Widget::~Widget() {
    delete ui;
}

void Widget::on_dsbPrice_valueChanged(double arg1) {
    double price = arg1;
    int weight = ui->sbWeight->value();

    ui->leTotal->setText(QString::number(price * weight));
}

void Widget::on_sbWeight_valueChanged(int arg1) {
    int weight = arg1;
    double price = ui->dsbPrice->value();
    ui->leTotal->setText(QString::number(weight * price));
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C语言 - 最简单,最易懂的指针、引用讲解

一、变量、地址、变量值 二、直接上代码&#xff0c;一边看上图&#xff0c;一边讲解 #include <stdio.h>struct Hello {int a;int b; };int main() {struct Hello h;h.a 10;h.b 20;struct Hello *hp;hp &h;printf("1: h的地址是%d&#xff0c;hp地址是%d \…

18.标题统计*

题目 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);String str sc.nextLine();int res 0;for(int i0;i<str.length();i) {char c str.charAt(i);if(c! && c!\n) {res;}}System.o…

LabVIEW在金属铜大气腐蚀预测评价系统中的应用

为了应对电子设备和仪器中金属铜因大气腐蚀带来的挑战&#xff0c;开发一种基于LabVIEW平台的先进预测评价系统。这个系统的设计宗旨是准确预测并评估在不同室内外环境中金属铜的腐蚀状况。我们团队在LabVIEW的强大数据处理和图形化编程支持下&#xff0c;结合实际的大气腐蚀数…

解锁行内元素和块元素的奥秘:网页开发的基础

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

Eureka切换Nacos时发现两个注册中心的解决方法

报错信息如下&#xff0c;意思是发现了两个注册中心 Field autoServiceRegistration in org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationAutoConfiguration required a single bean, but 2 were found: - nacosAutoServiceRegistration: defined…

手把手教你升级GPT-4,内附详细步骤

目录 1、先介绍一下 GPT 升级 2、第一种: 免费升级 支付宝购买礼品卡给美区 apple id 充值 3、第二种&#xff1a;5分钟快速升级 方法 平时我会在朋友圈分享一些利用 GPT-4 画的图片&#xff0c;比如下面这个扑克牌风格的"黑红小狗武士"。 用 GPT-4 做绘画仅仅是…

【C++】手撕 list类(包含迭代器)

目录 1&#xff0c;list的介绍及使用 2&#xff0c;list_node 3&#xff0c;list_node() 3&#xff0c;list 4&#xff0c;list() 5&#xff0c;push_back(const T& x) 6&#xff0c;print() 7&#xff0c;_list_iterator 8&#xff0c;operator*() 9&#xff0c…

什么是 RFID 及其工作原理?

一、自动识别技术 自1999年麻省理工学院研究人员的首创开始&#xff0c;自动识别技术&#xff08;简称auto-ID&#xff09;的领域不断扩大。自动识别技术形成了多种技术路线&#xff0c;使我们能够自动、精确地捕获、识别和存储与物体、物品或个人相关的数据&#xff0c;从而减…

[足式机器人]Part2 Dr. CAN学习笔记-Advanced控制理论 Ch04-3.5连续系统离散化

本文仅供学习使用 本文参考&#xff1a; B站&#xff1a;DR_CAN Dr. CAN学习笔记-Advanced控制理论 Ch04-3.5连续系统离散化

VS2022 | 显示Unreal Engine日志

VS2022 | 显示Unreal Engine日志 视图 -> 其他窗口 -> Unreal Engine日志 视图 -> 其他窗口 -> Unreal Engine日志

Python将Labelme文件的真实框和预测框绘制到图片上(v2.0)

Python将Labelme文件的真实框和预测框绘制到图片上&#xff08;v2.0&#xff09; 前言前提条件相关介绍实验环境Python将Labelme文件的标注信息绘制到图片上代码实现输出结果 前言 此版代码&#xff0c;相较于Python将Labelme文件的真实框和预测框绘制到图片上&#xff0c;将无…

每日一练:LeeCode-104. 二叉树的最大深度【二叉树】

本文是力扣LeeCode-104. 二叉树的最大深度 学习与理解过程&#xff0c;本文仅做学习之用&#xff0c;对本题感兴趣的小伙伴可以出门左拐LeeCode。 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例…

Neo4j备份

这里主要讲Neo4j在windows环境下如何备份&#xff0c;Linux环境同理 Neo4j恢复看这里:Neo4j恢复-CSDN博客 Step1:停服 关闭neo4j.bat console会话窗口即可 Step2: 备份 找到数据目录&#xff0c;并备份、压缩 copy即可 data - 20240108.7z Step3: 启动服务 进入命令行&am…

MongoDB 索引管理

文章目录 前言1. 术语介绍1.1 index / key1.2 Coverd Query1.3 IXSCAN / COLLSCAN1.4 Selectivity1.5 Index Prefix 2. 索引原理3. 索引的维护3.1 创建索引语法3.2 单字段索引3.3 多字段复合索引3.4 数组的多列索引3.5 全文索引3.6 Hash 索引3.7 TTL 索引3.8 删除索引3.9 后台创…

nextjs + ahooks 报错 Cannot use import statement outside a module

在 nextjs 中使用 ahooks 时&#xff0c;报错 SyntaxError: Cannot use import statement outside a module&#xff0c;如下图所示&#xff1a; 解决方案 transpilePackages 官网介绍 Next.js can automatically transpile and bundle dependencies from local packages (lik…

跨境电商卖家都在用的海外云手机

在过去的几年里&#xff0c;“品牌出海”一直是国内企业关注的焦点之一。我们亲眼目睹了跨境电商的迅猛增长&#xff0c;为了抢占市场份额&#xff0c;许多国内电商纷纷加入这一领域。在跨境电商运营的过程中&#xff0c;海外云手机几乎成了业内大佬们一致推崇的运营利器。那么…

C/C++ 有关质数(素数)的问题

第一题:判断是否为质数 代码&#xff1a; #include <bits/stdc.h> using namespace std; int main() {int a;int flag 1;cin>>a;for(int j2;j<a;j){if(a % j 0){cout<<a<<"不是质数";flag0;break;}}if(flag1) cout<<a<<&quo…

中国电子学会2023年9月份青少年软件编程Scratch图形化等级考试试卷二级真题(含答案)

一、选择题&#xff08;共25题&#xff0c;共50分&#xff09; 1.点击绿旗&#xff0c;运行程序后&#xff0c;舞台上的图形是&#xff1f;&#xff08;D &#xff09;&#xff08;2分&#xff09; A.画笔粗细为4的三角形 B.画笔粗细为5的六边形 C.画笔粗细为4的六角形 D.画…

Redis-Cluster 与 Redis 集群的技术大比拼

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 Redis-Cluster 与 Redis 集群的技术大比拼 前言概念与原理对比Redis-Cluster&#xff1a;基于哈希槽的分布式解决方案传统 Redis 集群&#xff1a;主从架构下的数据分片方式 搭建与配置的异同Redis-Cl…

Python 语言基础

目录 Python 语言基础语法特点注释缩进规范编写规则命名规范 变量保留字与标识符Python中的变量定义变量 基本数据类型数字字符串Bool类型数据类型转换 输入和输出input&#xff08;&#xff09;输入print 输出 Python 语言基础 语法特点 注释 单行注释&#xff0c;语法如下…