【嵌入式——QT】日期与定时器

日期

  • QTime:时间数据类型,仅表示时间,如 16:16:16;
  • QDate:日期数据类型,仅表示日期,如2024-1-22;
  • QDateTime:日期时间数据类型,表示日期和时间,如2024-1-22 19:03:03;
  • QTimeEdit:编辑和显示时间的组件;
  • QDateEdit:编辑和显示日期的组件;
  • QDateTimeEdit:编辑和显示日期时间的组件;
  • QCalendarWidget:一个用日历形式选择日期的组件;

定时器
需要引入的头文件 #include <QTimer>
QTimer:定时器,用来处理周期性事件的一种对象,类似于硬件定时器,例如设置一个定时器的定时周期为1000毫秒,那么每1000毫秒就会发射定时器的timeout()信号,在信号关联的槽函数里就可以做相应的处理。

日期显示格式符

  • d:天,不补零显示 1-31;
  • dd:天,补零显示 01-31;
  • M:月,不补零显示;
  • MM:月,补零显示;
  • yy:年,两位显示 00-99;
  • yyyy:年,四位显示 2024;
  • h:小时,不补零 0-23或1-12(如果显示AP/PM) ;
  • hh:小时,补零2位显示0-23或1-12(如果显示AP/PM);
  • H:小时,不补零 0-23(即使显示AP/PM);
  • HH:小时,补零 00-23(即使显示AP/PM);
  • m:分钟,不补零;
  • mm:分钟,补零;
  • z:毫秒 不补零 0-999;
  • zzz:毫秒 补零3位显示 000-999;
  • AP或A:使用Am/pm显示;
  • ap或a:使用am/pm显示;

图片示例
在这里插入图片描述
代码示例
DateTimeDialog.h

#ifndef DATETIMEDIALOG_H
#define DATETIMEDIALOG_H#include <QDialog>
#include <QTimer>
namespace Ui
{class DateTimeDialog;
}class DateTimeDialog : public QDialog
{Q_OBJECTpublic:explicit DateTimeDialog(QWidget* parent = nullptr);~DateTimeDialog();public slots:void on_pushButton_clicked();void on_pushButtonSetTime_clicked();void on_pushButtonSetDate_clicked();void on_pushButtonSetDateTime_clicked();void on_calendarWidget_selectionChanged();void timeOutMethod();private slots:void on_pushButtonStart_clicked();void on_pushButtonStop_clicked();private:Ui::DateTimeDialog* ui;QTimer* timer;
};#endif // DATETIMEDIALOG_H

DateTimeDialog.cpp

#include "DateTimeDialog.h"
#include "ui_DateTimeDialog.h"DateTimeDialog::DateTimeDialog(QWidget* parent): QDialog(parent), ui(new Ui::DateTimeDialog)
{ui->setupUi(this);timer = new QTimer(this);connect(timer, SIGNAL(timeout()), this, SLOT(timeOutMethod()));ui->pushButtonStop->setEnabled(false);ui->spinBox->setSuffix("ms");ui->spinBox->setMaximum(10000000);ui->spinBox->setMinimum(100);
}DateTimeDialog::~DateTimeDialog()
{delete ui;
}void DateTimeDialog::on_pushButton_clicked()
{//获取当前时间QDateTime curDateTime = QDateTime::currentDateTime();ui->timeEdit->setTime(curDateTime.time());ui->editTime->setText(curDateTime.toString("hh:mm:ss"));ui->dateEdit->setDate(curDateTime.date());ui->editDate->setText(curDateTime.toString("yyyy-MM-dd"));ui->dateTimeEdit->setDateTime(curDateTime);ui->editDateTime->setText(curDateTime.toString("yyyy-MM-dd hh:mm:ss"));
}void DateTimeDialog::on_pushButtonSetTime_clicked()
{QString str = ui->editTime->text();str = str.trimmed();QDateTime dateTime = QDateTime::fromString(str, "hh:mm:ss");ui->timeEdit->setTime(dateTime.time());
}void DateTimeDialog::on_pushButtonSetDate_clicked()
{QString str = ui->editDate->text();str = str.trimmed();QDateTime dateTime = QDateTime::fromString(str, "yyyy-MM-dd");ui->dateEdit->setDate(dateTime.date());
}void DateTimeDialog::on_pushButtonSetDateTime_clicked()
{QString str = ui->editDateTime->text();str = str.trimmed();QDateTime dateTime = QDateTime::fromString(str, "yyyy-MM-dd hh:mm:ss");ui->dateTimeEdit->setDateTime(dateTime);
}void DateTimeDialog::on_calendarWidget_selectionChanged()
{QDate dt = ui->calendarWidget->selectedDate();QString str = dt.toString("yyyy-MM-dd");ui->editCalendar->setText(str);
}void DateTimeDialog::timeOutMethod()
{QTime curTime = QTime::currentTime();ui->lcdNumberH->display(curTime.hour());ui->lcdNumberM->display(curTime.minute());ui->lcdNumberS->display(curTime.msec());
}void DateTimeDialog::on_pushButtonStart_clicked()
{timer->setInterval(ui->spinBox->value());timer->start();ui->pushButtonStop->setEnabled(true);ui->pushButtonStart->setEnabled(false);
}void DateTimeDialog::on_pushButtonStop_clicked()
{timer->stop();ui->pushButtonStop->setEnabled(false);ui->pushButtonStart->setEnabled(true);
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件测试有哪些常用的测试方法?

软件测试是软件开发过程中重要组成部分&#xff0c;是用来确认一个程序的质量或者性能是否符合开发之前提出的一些要求。软件测试的目的有两方面&#xff0c;一方面是确认软件的质量&#xff0c;另一方面是提供信息&#xff0c;例如&#xff0c;给开发人员或者程序经理反馈意见…

MATLAB环境下脑电信号EEG的谱分析

脑电信号一直伴随着人类的生命&#xff0c;脑电波是脑神经细胞发生新陈代谢、离子交换时细胞群兴奋突触电位总和&#xff0c;脑电信号的节律性则和丘脑相关&#xff0c;含有丰富的大脑活动信息。通常我们所接触的脑电图都是头皮脑电图&#xff0c;在有些特殊场合还需要皮下部位…

(正规api接口代发布权限)短视频账号矩阵系统实现开发--技术全自动化saas营销链路生态

短视频账号矩阵系统实现开发--技术全自动化saas营销链路生态源头开发&#xff08;本篇禁止抄袭复刻&#xff09; 一、短视频矩阵系统开发者架构 云罗短视频矩阵系统saas化系统&#xff0c;开发层将在CAP原则基础上使用分布式架构,对此网站的整体架构采用了基于B/S三层架构模式…

Python算法题集_组合总和

Python算法题集_组合总和 题39&#xff1a;组合总和1. 示例说明2. 题目解析- 题意分解- 优化思路- 测量工具 3. 代码展开1) 标准求解【值传递回溯】2) 改进版一【引用传递堆栈回溯】3) 改进版二【过程值列表缓存遍历后检索】 4. 最优算法5. 相关资源 本文为Python算法题集之一的…

鸿蒙OS应用编程实战:构建未来应用的基石

&#x1f482; 个人网站:【 海拥】【神级代码资源网站】【办公神器】&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交流的小伙伴&#xff0c;请点击【全栈技术交流群】 引言 鸿蒙OS&#xff08;HarmonyOS&#xff0…

TCP/UDP模型:2024/2/29

作业1&#xff1a;TCP模型 服务器端&#xff1a; #include <myhead.h> #define SER_IP "192.168.199.129" #define SER_PORT 8899int main(int argc, const char *argv[]) {//1.创建用于连接的套接字文件int sfdsocket(AF_INET,SOCK_STREAM,0);if(sfd-1){per…

docker save 命令 docker load 命令 快速复制容器

docker save 命令 docker load 命令 1、docker save 命令2、docker load 命令 1、docker save 命令 docker save 命令用于在系统上把正在使用的某个容器镜像 导出成容器镜像文件保存下载&#xff0c;以便在其他系统上导入这个容器镜像文件 以便快速在其他服务器上启动相同的容…

16. QML中的一些粒子特效

1.说明 在使用unity开发游戏时&#xff0c;都会涉及到一些特效的开发。实际上在QML中也提供了一些可以做特效的控件&#xff0c;称之为粒子系统。本篇博客主要记录一些使用粒子做特效的方式。 特效–火焰效果&#xff1a; 2. 案例汇总 2.1 案例1 效果展示&#xff1a; 粒子…

一文速览深度伪造检测(Detection of Deepfakes):未来技术的守门人

一文速览深度伪造检测&#xff08;Detection of Deepfakes&#xff09;&#xff1a;未来技术的守门人 前言一、Deepfakes技术原理卷积神经网络&#xff08;CNN&#xff09;&#xff1a;细致的艺术学徒生成对抗网络&#xff08;GAN&#xff09;&#xff1a;画家与评审的双重角色…

数仓模型设计方法论

在当今大数据时代&#xff0c;数据已经成为企业最重要的资产之一。而数据仓库作为企业数据管理和分析的核心基础设施&#xff0c;其设计方法论对于企业的数据治理和决策分析至关重要。本文将探索数仓模型设计的方法论&#xff0c;帮助读者更好地理解和应用数仓模型设计。 一、…

LeetCode 刷题 [C++] 第102题.二叉树的层序遍历

题目描述 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 题目分析 题目中要求层序遍历二叉树&#xff0c;即二叉树的广度优先搜索(BFS)。BFS一般使用队列的先入先出特性实现&#…

服了,阿里云服务器价格和腾讯云1元之差,如何选择?

2024年阿里云服务器和腾讯云服务器价格战已经打响&#xff0c;阿里云服务器优惠61元一年起&#xff0c;腾讯云服务器62元一年&#xff0c;2核2G3M、2核4G、4核8G、8核16G、16核32G、16核64G等配置价格对比&#xff0c;阿腾云atengyun.com整理阿里云和腾讯云服务器详细配置价格表…