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

2024-03-02 16:20

本文主要是介绍【Qt学习】QSpinBox 与 QDateTimeEdit 控件 的介绍与实例(),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 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. 把计算结果 设置给labelui->label_output->setText("时间差值为: " + QString::number(days) + " 天 " + QString::number(hours) + "时");
}void Widget::on_pushButton_clicked()
{calculateTimeDiff();
}

效果演示

请添加图片描述

2.3 资源文件

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

QDateTimeEdit控件的使用

这篇关于【Qt学习】QSpinBox 与 QDateTimeEdit 控件 的介绍与实例()的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

MySQL常用字符串函数示例和场景介绍

《MySQL常用字符串函数示例和场景介绍》MySQL提供了丰富的字符串函数帮助我们高效地对字符串进行处理、转换和分析,本文我将全面且深入地介绍MySQL常用的字符串函数,并结合具体示例和场景,帮你熟练... 目录一、字符串函数概述1.1 字符串函数的作用1.2 字符串函数分类二、字符串长度与统计函数2.1

MySQL多实例管理如何在一台主机上运行多个mysql

《MySQL多实例管理如何在一台主机上运行多个mysql》文章详解了在Linux主机上通过二进制方式安装MySQL多实例的步骤,涵盖端口配置、数据目录准备、初始化与启动流程,以及排错方法,适用于构建读... 目录一、什么是mysql多实例二、二进制方式安装MySQL1.获取二进制代码包2.安装基础依赖3.清

SpringBoot 异常处理/自定义格式校验的问题实例详解

《SpringBoot异常处理/自定义格式校验的问题实例详解》文章探讨SpringBoot中自定义注解校验问题,区分参数级与类级约束触发的异常类型,建议通过@RestControllerAdvice... 目录1. 问题简要描述2. 异常触发1) 参数级别约束2) 类级别约束3. 异常处理1) 字段级别约束

Apache Ignite缓存基本操作实例详解

《ApacheIgnite缓存基本操作实例详解》文章介绍了ApacheIgnite中IgniteCache的基本操作,涵盖缓存获取、动态创建、销毁、原子及条件更新、异步执行,强调线程池注意事项,避免... 目录一、获取缓存实例(Getting an Instance of a Cache)示例代码:二、动态

JSONArray在Java中的应用操作实例

《JSONArray在Java中的应用操作实例》JSONArray是org.json库用于处理JSON数组的类,可将Java对象(Map/List)转换为JSON格式,提供增删改查等操作,适用于前后端... 目录1. jsONArray定义与功能1.1 JSONArray概念阐释1.1.1 什么是JSONA

MySQL中的LENGTH()函数用法详解与实例分析

《MySQL中的LENGTH()函数用法详解与实例分析》MySQLLENGTH()函数用于计算字符串的字节长度,区别于CHAR_LENGTH()的字符长度,适用于多字节字符集(如UTF-8)的数据验证... 目录1. LENGTH()函数的基本语法2. LENGTH()函数的返回值2.1 示例1:计算字符串

zookeeper端口说明及介绍

《zookeeper端口说明及介绍》:本文主要介绍zookeeper端口说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、zookeeper有三个端口(可以修改)aVNMqvZ二、3个端口的作用三、部署时注意总China编程结一、zookeeper有三个端口(可以

Qt使用QSqlDatabase连接MySQL实现增删改查功能

《Qt使用QSqlDatabase连接MySQL实现增删改查功能》这篇文章主要为大家详细介绍了Qt如何使用QSqlDatabase连接MySQL实现增删改查功能,文中的示例代码讲解详细,感兴趣的小伙伴... 目录一、创建数据表二、连接mysql数据库三、封装成一个完整的轻量级 ORM 风格类3.1 表结构

Qt QCustomPlot库简介(最新推荐)

《QtQCustomPlot库简介(最新推荐)》QCustomPlot是一款基于Qt的高性能C++绘图库,专为二维数据可视化设计,它具有轻量级、实时处理百万级数据和多图层支持等特点,适用于科学计算、... 目录核心特性概览核心组件解析1.绘图核心 (QCustomPlot类)2.数据容器 (QCPDataC

Python中win32包的安装及常见用途介绍

《Python中win32包的安装及常见用途介绍》在Windows环境下,PythonWin32模块通常随Python安装包一起安装,:本文主要介绍Python中win32包的安装及常见用途的相关... 目录前言主要组件安装方法常见用途1. 操作Windows注册表2. 操作Windows服务3. 窗口操作