【QTimeEdit | QDateEdit | QDateTimeEdit | QCalendarWidget | QLCDNumber】

news2024/11/23 19:44:12

【QTimeEdit | QDateEdit | QDateTimeEdit | QCalendarWidget | QLCDNumber】

  • 【1】UI界面设计
  • 【2】相关头文件
  • 【3】构造函数初始化
  • 【4】setDate | setTime | setDateTime | currentDate | currentTime | currentDateTime
  • 【5】maximumDate | maximumTime | minimumDate | minimumTime | maximumDateTime | minimumDateTime
  • 【6】setCurrentSection
  • 【7】setCurrentSectionIndex
  • 【8】setCalendarPopup
  • 【9】setDisplayFormat
  • 【10】time | date
  • 【11】设置日期和时间格式
  • 【12】selectedDate
  • 【13】定时器槽函数
  • 【14】定时器日期时间处理 hour | minute | second
  • 【15】停止定时器日期时间处理 elapsed | asprintf


【1】UI界面设计

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

【2】相关头文件

#include <QTimer>
#include <QTime>


void on_pushButton_16_clicked();
void  Timer();

void on_pushButton_17_clicked();

private:
    Ui::MainWindow *ui;
    QTimer *fTimer;
    QTime fTimeCounter;

【3】构造函数初始化

//第四页初始化
fTimer = new QTimer(this);
fTimer->stop();
fTimer->setInterval(1000);//设置定时器的周期 这里设置之后 fTimer.start()可以不带参数了
connect(fTimer,SIGNAL(timeout()),this,SLOT(Timer()));

【4】setDate | setTime | setDateTime | currentDate | currentTime | currentDateTime

setDate 此属性保存在小部件中设置的qdate。默认情况下,此属性包含的日期为2000年1月1日。


setTime 此属性保存在小部件中设置的qtime。默认情况下,此属性包含00:00:00和0毫秒。


setDateTime 此属性保存在基准时间编辑中设置的基准时间。当设置此属性时,数量时间编辑的时间点保持不变,而新的数量时间编辑的时间点将被忽略。默认情况下,此属性设置为2000年的开始时间。它只能被设置为一个有效的定量时间值。如果有任何操作导致此属性具有无效的日期-时间作为值,则会将其重置为最小日期-时间属性的值。如果日期时间编辑没有日期字段,则设置此属性会将小部件的日期范围设置为从此属性的新值的日期开始和结束。


currentDate 返回由系统时钟所报告的当前日期。


currentTime 返回由系统时钟所报告的当前时间。请注意,精度取决于底层操作系统的精度;并非所有系统都提供1毫秒的精度。此外,当前时间()只在每天内增加;每次午夜过去,它将下降24小时;除此之外,如果夏令时过渡介入,它的变化可能与经过的时间不一致。


currentDateTime 返回系统时钟在本地时区中报告的当前日期时间。

//进行相关初始化
ui->dateTimeEdit->setDate(QDate::currentDate());//设置当前日期
ui->plainTextEdit->appendPlainText(ui->dateTimeEdit->date().toString("yyyy/MM/dd"));//显示操作记录
ui->dateTimeEdit->setTime(QTime::currentTime());//设置当前时间
ui->plainTextEdit->appendPlainText(ui->dateTimeEdit->time().toString("HH:mm:ss"));
ui->dateTimeEdit->setDateTime(QDateTime::currentDateTime());//设置当前日期时间
ui->plainTextEdit->appendPlainText(ui->dateTimeEdit->dateTime().toString("yyyy/MM/dd HH:mm:ss"));

【5】maximumDate | maximumTime | minimumDate | minimumTime | maximumDateTime | minimumDateTime

以上这些函数皆是获取时间和日期

//显示最大最小时间/日期
ui->plainTextEdit->appendPlainText(ui->dateTimeEdit->maximumDate().toString());//使用默认格式输出
ui->plainTextEdit->appendPlainText(ui->dateTimeEdit->maximumTime().toString());
ui->plainTextEdit->appendPlainText(ui->dateTimeEdit->minimumDate().toString());
ui->plainTextEdit->appendPlainText(ui->dateTimeEdit->minimumTime().toString());
ui->plainTextEdit->appendPlainText(ui->dateTimeEdit->maximumDateTime().toString());
ui->plainTextEdit->appendPlainText(ui->dateTimeEdit->minimumDateTime().toString());

【6】setCurrentSection

此属性保存自旋箱的当前部分。

//设置当前段
ui->dateTimeEdit->setCurrentSection(QDateTimeEdit::YearSection);

【7】setCurrentSectionIndex

此属性保存旋转箱的当前分段索引。如果格式为“yyyy/mm/dd”,则显示文本为“2001/05/21”,排序位置为5,当前分段索引返回1。如果显示位置为3,则当前分段索引为0,以此类推。

//设置当前段索引
    ui->dateTimeEdit->setCurrentSectionIndex(1);

【8】setCalendarPopup

//设置弹出日历选择框
    ui->dateTimeEdit->setCalendarPopup(true);

在这里插入图片描述

【9】setDisplayFormat

 //设置显示格式
    ui->dateTimeEdit->setDisplayFormat("yyyy/MM/dd HH:mm:ss");

【10】time | date

time 返回日期时间中的时间部分。
date 返回日期时间的日期部分。

 //为界面日期和时间设置值
    QDateTime curDateTime = QDateTime::currentDateTime();
    ui->timeEdit->setTime(curDateTime.time());
    ui->dateEdit->setDate(curDateTime.date());
    ui->dateTimeEdit->setDateTime(curDateTime);

【11】设置日期和时间格式

//设置时间
void MainWindow::on_pushButton_13_clicked()
{
    ui->lineEdit->setText(QDateTime::currentDateTime().toString("hh:mm:ss"));
}
//设置日期
void MainWindow::on_pushButton_14_clicked()
{
    ui->lineEdit_3->setText(QDateTime::currentDateTime().toString("yyyy-MM-dd"));
}
//设置日期和时间
void MainWindow::on_pushButton_15_clicked()
{
//    ui->lineEdit_4->setText(QDateTime::currentDateTime().toString("yyyy年MM月dd日 hh:mm:ss:zzz:ap"));
//    ui->plainTextEdit->appendPlainText(QDateTime::currentDateTime().toString("yyyy年MM月dd日 hh:mm:ss:zzz:ap"));

    ui->lineEdit_4->setText(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss"));
    ui->plainTextEdit->appendPlainText(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss"));

    //字符串转化为日期时间 一定要保证格式一致
    QString str = ui->lineEdit_4->text();
    str = str.trimmed();//返回从开头和结尾删除空格的字符串。
    if(!str.isEmpty())
    {
        QDateTime datetime = QDateTime::fromString(str,"yyyy-MM-dd hh:mm:ss");
        ui->dateTimeEdit->setDateTime(datetime);
    }

}

【12】selectedDate

此属性保存当前选定的日期。所选日期必须在最小日期和最大日期属性所指定的日期范围内。默认情况下,选定的日期为当前日期。

//设置日历
void MainWindow::on_calendarWidget_selectionChanged()
{
    QDate dt = ui->calendarWidget->selectedDate();//获取日期
    QString str = dt.toString("yyyy年MM月dd日");
    ui->lineEdit_2->setText(str);
}

【13】定时器槽函数

void MainWindow::on_pushButton_16_clicked()
{
    fTimer->start();//开启定时器  上面已经设置了周期 所以这里不用指定多少秒
    fTimeCounter.start();//计时器开始工作
    ui->pushButton_16->setEnabled(false);
    ui->pushButton_17->setEnabled(true);
    ui->pushButton_18->setEnabled(false);
}

【14】定时器日期时间处理 hour | minute | second

//开启定时器
void MainWindow::Timer()
{
    ui->plainTextEdit->appendPlainText("开启定时器");
    QTime curtime = QTime::currentTime();
    ui->lcdNumber_2->display(curtime.hour());//小时
    ui->lcdNumber_3->display(curtime.minute());//分钟
    ui->lcdNumber_4->display(curtime.second());//秒

    int val = ui->progressBar_2->value();
    val++;
    if(val>100)
        val=0;
    ui->progressBar_2->setValue(val);
    ui->plainTextEdit->appendPlainText(QString("%1").arg(fTimeCounter.elapsed()));
}

【15】停止定时器日期时间处理 elapsed | asprintf

//停止定时器
void MainWindow::on_pushButton_17_clicked()
{
    fTimer->stop();
    int tms=fTimeCounter.elapsed();//毫秒数
    int ms = tms%1000;
    int sec = tms/1000;
    QString str = QString::asprintf("流逝时间:%d 秒,%d 毫秒",sec,ms);
    ui->label_24->setText(str);
    ui->pushButton_16->setEnabled(true);
    ui->pushButton_17->setEnabled(false);
    ui->pushButton_18->setEnabled(true);
}

在这里插入图片描述

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

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

相关文章

基于Java+SpringBoot+vue等疫情期间网课管理系统详细设计和实现

博主介绍&#xff1a;✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取联系&#x1f345;精彩专栏推荐订阅收藏&#x1f447;&…

使用Prometheus和Grafana监控Apache Doris

目录1. 介绍2. Prometheus和Grafana的简单使用3. 配置Prometheus的prometheus.yml4. 下载Doris Dashboard模板1. 介绍 Doris的FE和BE通过http端口metrics路径&#xff0c;将监控数据暴露出来&#xff0c;以key-value的文本形式对外展现&#xff0c;每个key还可能有不同的Label…

Nacos注册中心

【Spring Cloud Alibaba】 1. Spring Cloud Alibaba Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件&#xff0c;方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。 依托 Spring Cloud …

微信小程序开发—入门到跑路(五)

文章目录1. 今日目标2. 使用 npm2.1 小程序对 npm 的支持和限制问题2.2 了解什么是 vant Weapp2.3 安装 Vant 组件库问题2.4 使用 Vant 组件问题2.5 定义和使用 CSS 变量问题2.6 使用 CSS 变量定制 Vant 的主题样式问题2.7 什么是小程序 API 的 Promise 化2.8 安装并构建 minip…

运输层协议概述(计算机网络-运输层)

目录 运输层协议的位置 运输层为相互通信的应用进程提供了逻辑通信 应用进程之间的通信 客户-服务器通信模式 互联网的运输层协议 UDP 与 TCP 运输层的复用与分用 运输层端口的概念 端口在进程之间的通信中所起的作用 端口号 运输层协议的位置 从通信和信息处理的角度…

2022年终总结(脚踏实地,仰望星空)

2022年终总结 回忆录 2022年焦虑和快乐是这一年中最大的两种情绪了。焦虑主要是因为心里的三块石头&#xff0c;从年初就开始悬着。第一块石头&#xff0c;科研论文录用&#xff0c;第二个石头&#xff0c;拿到国奖&#xff0c;第三个石头是拿到满意的offer。目前只剩下最后一…

网络实验之EtherChannel技术实践

一、EtherChannel简介 EtherChannel简单来说就是将多个物理端口绑定为一个逻辑端口&#xff0c;通过多个端口绑定&#xff0c;能充分利用现有端口来增加带宽。构成etherchannel的端口必须配置成相同的特性&#xff0c;如双工模式、速度、同为FE或GE端口、native VLAN,、VLAN ra…

C++11标准模板(STL)- 算法(std::inner_product)

定义于头文件 <algorithm> 算法库提供大量用途的函数&#xff08;例如查找、排序、计数、操作&#xff09;&#xff0c;它们在元素范围上操作。注意范围定义为 [first, last) &#xff0c;其中 last 指代要查询或修改的最后元素的后一个元素。 计算两个范围的元素的内积…

十七、Docker Compose容器编排第二篇

在上一篇中我们讲解了容器编排是什么、能干什么、怎么安装、使用步骤&#xff0c;如果没有看的大家可以先看下&#xff1a;https://blog.csdn.net/u011837804/article/details/128335166&#xff0c;然后继续看这一篇&#xff0c;好了&#xff0c;我们继续。 1、Docker Compons…

gl-Camera

我的服务原文访问&#xff1a;Camera 1.创建摄像机的坐标系&#xff0c;&#xff08;创建原理&#xff0c;两条直线求其法向量&#xff09; Z轴:在世界坐标中指向摄像机的向量&#xff08;D&#xff09; X轴&#xff1a;随便找一个向上量和Z向量求出的法向量就是X轴&#xf…

PostgreSQL数据库TableAM——Table scan callbacks

TableAM Table scan TableAM提供了如下4个接口用于实现表数据的扫描功能。scan_begin函数的形参nkeys不为零&#xff0c;则扫描结果需要根据scan keys先进行过滤&#xff1b;pscan如果不为null&#xff0c;说明该结构体已经由parallelscan_initialize初始化过了(仅仅在table_b…

初识Docker:(5)Docker自定义镜像

初识Docker&#xff1a;&#xff08;5&#xff09;Docker自定义镜像镜像结构Dockerfile语法什么是Dockerfile构建Java项目案例1&#xff1a;基于ubuntu镜像构建一个新镜像&#xff0c;运行一个java项目案例2&#xff1a;基于java:8-alpine镜像&#xff0c;将一个java项目构建为…

Java+JSP机房课表管理系统(含源码+论文+答辩PPT等)

项目功能简介: 该项目采用技术CSSJavaScriptMySQLServlet、MySQL数据库、项目含有源码、配套开发软件、软件安装教程、项目发布教程等 项目功能介绍&#xff1a; 系统管理&#xff1a;包含用户的注册&#xff0c;管理&#xff0c;信息修改 课程管理&#xff1a;包含课程录入、维…

IT大侦“碳”:VxRail的可持续法宝

环境Environmental      社会责任Social Responsibility      企业治理Corporate Governance      随着碳达峰、碳中和的逐步推进,越来越多的“大厂”或各行业的明星企业都开始重视自己的ESG报告,已然成为了商界新风尚。      可持续发展战略也与前沿技术密切相…

matlab神经网络求解最优化,matlab神经网络训练数据

1、神经网络的准确率是怎么计算的&#xff1f; 其实神经网络的准确率的标准是自己定义的。 我把你的例子赋予某种意义讲解&#xff1a; 1&#xff0c;期望输出[1 0 0 1]&#xff0c;每个元素代表一个属性是否存在。像着4个元素分别表示&#xff1a;是否肺炎&#xff0c;是否肝…

哈希知识点

目录对比map/set1. unordered系列关联式容器1.1 unordered_map2. 底层结构2.1 哈希概念2.2 哈希冲突2.3 哈希函数2.4 哈希冲突解决2.4.1 闭散列线性探测和二次探测扩容&#xff08;负载因子&#xff09;闭散列实现的hash2.4.2 开散列概念开散列思考实现模拟实现模板参数列表的改…

Java项目:springboot农业物资管理系统

作者主页&#xff1a;源码空间站2022 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 农业物资管理系统&#xff0c;管理员可以对角色进行配置&#xff0c;分配用户角色&#xff1b; 主要功能包含&#xff1a;登录、注册、修改密码…

并查集解决重复员工问题

简介 工作一年多了&#xff0c;天天CRUD&#xff0c;终于以前学习的算法排上用场了。 背景 我们的系统在用户注册时没有校验身份id&#xff08;身份证&#xff09;和电话号码的唯一&#xff0c;可能使用相同的身份id或者电话号码创建多个账号&#xff0c;导致有些人开多个账…

面试者推荐 |【Redis面试专题】「常见问答系列」透析Redis常见技术相关的问题1~10题(进阶)

&#x1f4da; 前提回顾 首先如果没有阅读【面试者推荐 |【Redis面试专题】「常见问答系列」透析Redis常见技术相关的问题1~10题&#xff08;基础&#xff09; 】&#xff0c;简易先去看看基础10题&#xff0c;因为循序渐进才是正道&#xff0c;哈哈。 &#x1f4da; 1. Redis…

WebRTC源码之RTCPReceiver源码分析

WebRTC源码之RTCPReceiver源码分析 WebRTC源码之RTCPReceiver源码分析WebRTC源码之RTCPReceiver源码分析前言一、 RTCP接受数据的流程的堆栈信息的1、网络io 线程读取数据2、 线程切换的代码3、 线程切换 gcc二、 RTCPReceiver::IncomingPacket方法读取RTCP数据的格式1、 Parse…