【Qt学习】QSpinBox 与 QDateTimeEdit 控件 的介绍与实例()

news2024/9/24 18:00:49

文章目录

  • QSpinBox
    • 1.1 介绍
    • 1.2 实例使用 - (模拟点餐-功能扩充)
    • 1.3 资源文件
  • 2. QDateTimeEdit
    • 2.1 介绍
    • 2.2 使用(计算时间差值 / 间隔)
      • daysTo() 与 secsTo()
    • 2.3 资源文件

QSpinBox

1.1 介绍

在这里插入图片描述

  • 对于QSpinBox,我们可以查阅 Qt的官方文档 进行了解:

这里简单进行总结:

  1. QSpinBox,即 微调框 ,用于提供一个用于输入整数值的微调控件。通常用于需要用户输入特定范围内整数值的界面

  2. QSpinBox提供了一个带有箭头按钮的文本字段,用户可以通过点击箭头按钮或手动键入来增加或减少值。它还提供了一些附加功能,如设置最小值、最大值和步长。

在这里插入图片描述

下面是QSpinBox的 核心属性:

属性描述
value当前SpinBox中显示的整数值
minimum允许输入的最小整数值
maximum允许输入的最大整数值
singleStep每次增加或减少的步长值
prefix显示在值之前的文本
suffix显示在值之后的文本
readOnly指示SpinBox是否为只读模式(用户无法编辑值)
wrapping指示SpinBox是否在达到最大或最小值时循环(wrap around)
alignment文本对齐方式
buttonSymbols箭头按钮上显示的符号类型(加号、减号等)
specialValueText指定一个特殊值的文本表示方式

1.2 实例使用 - (模拟点餐-功能扩充)

此前学习QComboBox类时,我们利用其实现了一个模拟点餐的功能,这里利用QSpinBox进行功能扩充:

  1. 在图形化界面下进行如下布局,并初始化下拉菜单(QComboBox):
    在这里插入图片描述

  2. widget.cpp中设置spinBox的范围

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    // 设置SpinBox的范围
    ui->spinBox_1->setRange(0, 10);
    ui->spinBox_2->setRange(0, 10);
    ui->spinBox_3->setRange(0, 10);
}
  1. 在按钮的 槽函数 中实现功能:
    • 提取顾客选择的餐饮的信息(名称与数量)
    • 弹出窗口输出提取的信息
void Widget::on_pushButton_clicked()
{
    // 获取下拉框中选中的内容
    QString text1 = ui->comboBox_1->currentText();
    QString text2 = ui->comboBox_2->currentText();
    QString text3 = ui->comboBox_3->currentText();

    QString output = text1 + ": " + QString::number(ui->spinBox_1->value()) +
                     "\n" + text2 + ": " + QString::number(ui->spinBox_2->value()) +
                     "\n" + text3 + ": " + QString::number(ui->spinBox_3->value());

    QMessageBox::information(this, "Output", output);
}

效果演示

请添加图片描述


1.3 资源文件

上述涉及的代码等资源文件在👇

QSpinBox控件的使用


2. QDateTimeEdit

2.1 介绍

在这里插入图片描述

同样的,我们可以查阅 Qt的官方文档 进行详细的认知,这里进行总结:

首先,简单介绍一下QDateEdit、QTimeEdit、QDateTimeEdit 三者的关系:

控件功能
QDateEdit编辑日期; 允许用户选择年、月和日。用户可以通过下拉菜单或手动输入来修改日期
QTimeEdit编辑时间 ; 允许用户选择小时、分钟和秒。用户可以通过下拉菜单或手动输入来修改时间
QDateTimeEdit编辑日期时间 ; 结合了QDateEdit和QTimeEdit的功能,允许用户选择日期和时间。用户可以通过下拉菜单或手动输入来修改日期和时间

下面是QDateTimeEdit的 核心属性:

属性描述方法
date当前编辑的日期部分setDate()
time当前编辑的时间部分setTime()
dateTime当前编辑的日期时间setDateTime()
calendarPopup是否显示日历弹出窗口setCalendarPopup()
timeSpec时间规格(本地时间或UTC)setTimeSpec()
displayFormat显示日期时间的格式setDisplayFormat()
minimumDateTime可编辑的最小日期时间setMinimumDateTime()
maximumDateTime可编辑的最大日期时间setMaximumDateTime()

核心信号:

信号描述
dateTimeChanged当用户修改了日期时间时发出此信号
dateChanged当用户修改了日期时发出此信号
timeChanged当用户修改了时间时发出此信号

2.2 使用(计算时间差值 / 间隔)

该例中,我们利用QDateTimeEdit计算两个时间的时间差值(差值以n天n时表示):

首先介绍后面会用到的函数:

daysTo() 与 secsTo()

方法名描述
daysTo()计算两个日期时间之间的天数差异,返回整数值。如果调用对象在参数对象之前,则返回负值。
secsTo()计算两个日期时间之间的秒数差异,返回整数值。如果调用对象在参数对象之前,则返回负值。

根据表格,可以知道:

  • dayTo()返回一个整数,表示两个日期之间相隔的天数,根据时刻计算,就算总时长不满24小时,依然算作一天;
  • 不满足我们要实现的精确到小时,所以这里使用secsTo()

  1. 图形化界面下进行如下布局:

在这里插入图片描述

  1. 封装一个计算时间差值的函数caculateTimeDiff(),点击按钮的槽函数调用该函数
// 计算时间差值
void Widget::calculateTimeDiff()
{
    //1. 获取两次时间
    QDateTime oldT = ui->dateTimeEdit_1->dateTime();
    QDateTime newT = ui->dateTimeEdit_2->dateTime();

    // 2. 计算差值 - 秒数
    int seconds = oldT.secsTo(newT);
    // 3. 将秒数转换为小时与天
    int hours = (seconds / 3600) % 24;
    int days = (seconds / 3600) / 24;
    // 4. 把计算结果 设置给label
    ui->label_output->setText("时间差值为: " + QString::number(days) + " 天 " + QString::number(hours) + "时");
}

void Widget::on_pushButton_clicked()
{
    calculateTimeDiff();
}

效果演示

请添加图片描述

2.3 资源文件

上述所涉及到的代码等资源文件在👇

QDateTimeEdit控件的使用

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OSI七层模型/TCP四层模型

协议: 协议是双方共同指定的一组规则,在网络通信中表示通信双方传递数据和解释数据的一组规则。 从A上传文件到服务器B,需要在A和B之间制定一个双方都认可的规则,这个规则就叫文件传输协议,该协议是ftp协议的一个初级版本&#…

JavaScript练手小技巧:一文看懂<script>标签的 ansyc 和 defer

<script>标签的 ansyc 和 defer 属性。只对外部加载 JS 文件有效。 <script src"js/app.js" async></script> <script src"js/app.js" defer></script> 普通加载 js&#xff08;同步加载&#xff09;&#xff1a;会打断 …

uview2中上传文件和若依前后端分离配合的代码

uview2中的上传文件需要配合着自己后端的上传的代码 uview2 代码&#xff1a; uploadFilePromise(url) {return new Promise((resolve, reject) > {// 后续自己封装let a uni.uploadFile({//自己的请求路径url: that.$baseURL /uploadAvater, //上传的文件filePath: tha…

leetcode hot100 每日温度

在本题中&#xff0c;我们是通过单调栈来解决的&#xff0c;因为我们采用了栈的数据结构&#xff0c;并且&#xff0c;栈内存储的元素是单调的。 本题我们考虑&#xff0c;将气温数组元素的下标存入栈中&#xff0c;首先初始化要把0放入&#xff0c;0是下标的意思。然后我们拿…

诊所门诊电子处方软件操作教程及试用版下载,医务室处方笺管理系统模板教程

诊所门诊电子处方软件操作教程及试用版下载&#xff0c;医务室处方笺管理系统模板教程 一、前言 以下软件程序教程以 佳易王诊所电子处方软件V17.0为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 如上图&#xff0c;点击基本信息设置——处方配…

【JavaEE进阶】 代理模式

文章目录 &#x1f343;前言&#x1f38b;什么叫代理模式&#x1f334;静态代理&#x1f38d;动态代理&#x1f6a9;JDK动态代理&#x1f6a9;CGLIB动态代理 ⭕总结 &#x1f343;前言 前面对Spring AOP的详细使用进行了介绍&#xff0c;这篇博客博主将详细讲解一下Spring AOP…

使用统一功能完善图书管理系统

目录 一、前提 二、实现强制登陆传统方式 三、拦截器 1、概念 2、拦截器 &#xff08;1&#xff09;定义拦截器 &#xff08;2&#xff09;注册拦截器 &#xff08;3&#xff09;运行 3、使用拦截器实现强制登陆 4、DispatcherServlet源码解析 四、适配器模式 1、适…

深入剖析k8s-控制器思想

引言 本文是《深入剖析Kubernetes》学习笔记——《深入剖析Kubernetes》 正文 控制器都遵循K8s的项目中一个通用的编排模式——控制循环 for {实际状态 : 获取集群中对象X的实际状态期望状态 : 获取集群中对象X的期望状态if 实际状态 期望状态 {// do nothing} else {执行…

协议-http协议-基础概念03-http状态码-http特点-http性能-压缩和分块传输-范围请求

参考来源&#xff1a; 极客时间-透视HTTP协议(作者&#xff1a;罗剑锋)&#xff1b; 01-状态码分类 开头的 Version 部分是 HTTP 协议的版本号&#xff0c;通常是HTTP/1.1&#xff0c;用处不是很大。后面的 Reason 部分是原因短语&#xff0c;是状态码的简短文字描述&#xff…

【计算机网络_应用层】TCP应用与相关API守护进程

需要云服务器等云产品来学习Linux的同学可以移步/–>腾讯云<–/官网&#xff0c;轻量型云服务器低至112元/年&#xff0c;优惠多多。&#xff08;联系我有折扣哦&#xff09; 文章目录 1. 相关使用接口2. 代码实现2.1 日志组件2.2 Server端2.3 Client端2.3 bug解决 3. 守…

c语言数据结构(5)——栈

欢迎来到博主的专栏——C语言数据结构 博主id&#xff1a;代码小豪 文章目录 栈栈的顺序存储结构栈的插入空栈的初始化栈的删除判断空栈读取栈顶元素数据 实现顺序栈的所有代码栈的链式存储结构链式栈的初始化链式栈的入栈操作链式栈的出栈操作 实现链式栈的所有代码 栈 栈是…

[微服务]Eureka注册中心

目录 1、引言 2、Eureka的结构和作用 2.1、图解 2.2、几个重要问题⭐ 3、搭建eureka-server 3.1.创建eureka-server服务 3.2、引入eureka依赖 3.3、编写启动类 3.4、编写配置文件 3.5、启动服务 4、服务注册(user) 4.1、引入依赖 4.2、配置文件 4.3、启动多个use…

python--练习题

1.python是一种&#xff08; &#xff09;类型的编程语言 A.机器语言 B.解释 C.编译 D.汇编语言 答案&#xff1a;B 2.python语言print(中国&#xff0c;你好)的输出是&#xff08;&#xff09; A.(中国&#xff0c;你好&#xff09; B.中国&#xff0c;你好 C.中国&#xff0c…

【前端素材】推荐优质后台管理系统网页Star admin平台模板(附源码)

一、需求分析 1、系统定义 后台管理系统是一种用于管理和控制网站、应用程序或系统的管理界面。它通常被设计用来让网站或应用程序的管理员或运营人员管理内容、用户、数据以及其他相关功能。后台管理系统是一种用于管理网站、应用程序或系统的工具&#xff0c;通常由管理员使…

吴恩达机器学习全课程笔记第五篇

目录 前言 P80-P85 添加数据 迁移学习 机器学习项目的完整周期 公平、偏见与伦理 P86-P95 倾斜数据集的误差指标 决策树模型 测量纯度 选择拆分方式增益 使用分类特征的一种独热编码 连续的有价值特征 回归树 前言 这是吴恩达机器学习笔记的第五篇&#xff0c…

Redis 的 介绍 及 使用

redis 简介 简单来说 redis 就是一个数据库&#xff0c;不过与传统数据库不同的是 redis 的数据是存在内存中的&#xff0c;所以读写速度非常快&#xff0c;因此 redis 被广泛应用于缓存方向。另外&#xff0c;redis 也经常用来做分布式锁。redis 提供了多种数据类型来支持不同…

springboot3.x 以上,官方不建议使用spring.factories

springboot2.7.x 以上,官方不建议使用spring.factories 最近公司项目升级.需要将springcloud/springboot版本升级到2.7.x以上,再升级的过程中遇到了太多的问题.总结在了如下文章中: springboot艰难版本升级之路!! springboot 2.3.x版本升级到2.7.x版本 这篇文章就重点是梳理一…

npm digital envelope routines::unsupported

问题描述&#xff1a;npm运行命令报错&#xff1a;digital envelope routines::unsupported 原因&#xff1a;node版本过高 解决方案&#xff1a;在运行命令之前加上 SET NODE_OPTIONS--openssl-legacy-provider && SET NODE_OPTIONS--openssl-legacy-provider &&a…

vSphere资源管理

一 内存、CPU、资源池和vApp 内存部分&#xff1a; 关联VM内存 我们可以超额的关联内存给VM。例如&#xff1a;ESXI物理主机内存只有8G&#xff0c;但我们可以给三个VM都分配4G内存。 2.ESXI四大高级内存控制技术 a.Page sharing&#xff08;透明的页面共享&#xff09; 虚…

PYTHON 自动化办公:压缩图片(PIL)

1、介绍 在办公还是学习过程中&#xff0c;难免会遇到上传照片的问题。然而照片的大小限制一直都是个问题&#xff0c;例如照片限制在200Kb之内&#xff0c;虽然有很多图像压缩技术可以实现&#xff0c;但从图像处理的专业来说&#xff0c;可以利用代码实现 这里使用的库函数是…