【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

相关文章

5 种使用Python自动化处理PDF的实用方法介绍

《5种使用Python自动化处理PDF的实用方法介绍》自动化处理PDF文件已成为减少重复工作、提升工作效率的重要手段,本文将介绍五种实用方法,从内置工具到专业库,帮助你在Python中实现PDF任务... 目录使用内置库(os、subprocess)调用外部工具使用 PyPDF2 进行基本 PDF 操作使用

PyQt6 键盘事件处理的实现及实例代码

《PyQt6键盘事件处理的实现及实例代码》本文主要介绍了PyQt6键盘事件处理的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起... 目录一、键盘事件处理详解1、核心事件处理器2、事件对象 QKeyEvent3、修饰键处理(1)、修饰键类

SpringBoot+RustFS 实现文件切片极速上传的实例代码

《SpringBoot+RustFS实现文件切片极速上传的实例代码》本文介绍利用SpringBoot和RustFS构建高性能文件切片上传系统,实现大文件秒传、断点续传和分片上传等功能,具有一定的参考... 目录一、为什么选择 RustFS + SpringBoot?二、环境准备与部署2.1 安装 RustF

QT Creator配置Kit的实现示例

《QTCreator配置Kit的实现示例》本文主要介绍了使用Qt5.12.12与VS2022时,因MSVC编译器版本不匹配及WindowsSDK缺失导致配置错误的问题解决,感兴趣的可以了解一下... 目录0、背景:qt5.12.12+vs2022一、症状:二、原因:(可以跳过,直奔后面的解决方法)三、解决方

Java中HashMap的用法详细介绍

《Java中HashMap的用法详细介绍》JavaHashMap是一种高效的数据结构,用于存储键值对,它是基于哈希表实现的,提供快速的插入、删除和查找操作,:本文主要介绍Java中HashMap... 目录一.HashMap1.基本概念2.底层数据结构:3.HashCode和equals方法为什么重写Has

MySQL的配置文件详解及实例代码

《MySQL的配置文件详解及实例代码》MySQL的配置文件是服务器运行的重要组成部分,用于设置服务器操作的各种参数,下面:本文主要介绍MySQL配置文件的相关资料,文中通过代码介绍的非常详细,需要... 目录前言一、配置文件结构1.[mysqld]2.[client]3.[mysql]4.[mysqldum

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Springboot项目构建时各种依赖详细介绍与依赖关系说明详解

《Springboot项目构建时各种依赖详细介绍与依赖关系说明详解》SpringBoot通过spring-boot-dependencies统一依赖版本管理,spring-boot-starter-w... 目录一、spring-boot-dependencies1.简介2. 内容概览3.核心内容结构4.

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.

Java Stream流以及常用方法操作实例

《JavaStream流以及常用方法操作实例》Stream是对Java中集合的一种增强方式,使用它可以将集合的处理过程变得更加简洁、高效和易读,:本文主要介绍JavaStream流以及常用方法... 目录一、Stream流是什么?二、stream的操作2.1、stream流创建2.2、stream的使用2.