【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

相关文章

基于Qt开发一个简单的OFD阅读器

《基于Qt开发一个简单的OFD阅读器》这篇文章主要为大家详细介绍了如何使用Qt框架开发一个功能强大且性能优异的OFD阅读器,文中的示例代码讲解详细,有需要的小伙伴可以参考一下... 目录摘要引言一、OFD文件格式解析二、文档结构解析三、页面渲染四、用户交互五、性能优化六、示例代码七、未来发展方向八、结论摘要

Oracle Expdp按条件导出指定表数据的方法实例

《OracleExpdp按条件导出指定表数据的方法实例》:本文主要介绍Oracle的expdp数据泵方式导出特定机构和时间范围的数据,并通过parfile文件进行条件限制和配置,文中通过代码介绍... 目录1.场景描述 2.方案分析3.实验验证 3.1 parfile文件3.2 expdp命令导出4.总结

MySQL的索引失效的原因实例及解决方案

《MySQL的索引失效的原因实例及解决方案》这篇文章主要讨论了MySQL索引失效的常见原因及其解决方案,它涵盖了数据类型不匹配、隐式转换、函数或表达式、范围查询、LIKE查询、OR条件、全表扫描、索引... 目录1. 数据类型不匹配2. 隐式转换3. 函数或表达式4. 范围查询之后的列5. like 查询6

python与QT联合的详细步骤记录

《python与QT联合的详细步骤记录》:本文主要介绍python与QT联合的详细步骤,文章还展示了如何在Python中调用QT的.ui文件来实现GUI界面,并介绍了多窗口的应用,文中通过代码介绍... 目录一、文章简介二、安装pyqt5三、GUI页面设计四、python的使用python文件创建pytho

QT实现TCP客户端自动连接

《QT实现TCP客户端自动连接》这篇文章主要为大家详细介绍了QT中一个TCP客户端自动连接的测试模型,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录版本 1:没有取消按钮 测试效果测试代码版本 2:有取消按钮测试效果测试代码版本 1:没有取消按钮 测试效果缺陷:无法手动停

基于Qt实现系统主题感知功能

《基于Qt实现系统主题感知功能》在现代桌面应用程序开发中,系统主题感知是一项重要的功能,它使得应用程序能够根据用户的系统主题设置(如深色模式或浅色模式)自动调整其外观,Qt作为一个跨平台的C++图形用... 目录【正文开始】一、使用效果二、系统主题感知助手类(SystemThemeHelper)三、实现细节

Qt实现文件的压缩和解压缩操作

《Qt实现文件的压缩和解压缩操作》这篇文章主要为大家详细介绍了如何使用Qt库中的QZipReader和QZipWriter实现文件的压缩和解压缩功能,文中的示例代码简洁易懂,需要的可以参考一下... 目录一、实现方式二、具体步骤1、在.pro文件中添加模块gui-private2、通过QObject方式创建

Python开发围棋游戏的实例代码(实现全部功能)

《Python开发围棋游戏的实例代码(实现全部功能)》围棋是一种古老而复杂的策略棋类游戏,起源于中国,已有超过2500年的历史,本文介绍了如何用Python开发一个简单的围棋游戏,实例代码涵盖了游戏的... 目录1. 围棋游戏概述1.1 游戏规则1.2 游戏设计思路2. 环境准备3. 创建棋盘3.1 棋盘类

Qt QWidget实现图片旋转动画

《QtQWidget实现图片旋转动画》这篇文章主要为大家详细介绍了如何使用了Qt和QWidget实现图片旋转动画效果,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 一、效果展示二、源码分享本例程通过QGraphicsView实现svg格式图片旋转。.hpjavascript

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert