Qt获取当前时间(超详细)

2023-11-01

Qt获取当前时间(超详细)

转载自别的网站

时间日期是经常遇到的数据类型,Qt 中时间日期类型的类如下:

  1. QTime:时间数据类型,仅表示时间,如15:23:13。
  2. QDate:日期数据类型,仅表示日期,如2017-4-5。
  3. QDateTime:日期时间数据类型,表示日期和时间,如2017-03-23 08:12:43。

Qt 中有专门用于日期、时间编辑和显示的界面组件,介绍如下:

  1. QTimeEdit:编辑和显示时间的组件。
  2. QDateEdit:编辑和显示日期的组件。
  3. QDateTimeEdit:编辑和显示日期时间的组件。
  4. QCalendarWidget: 一个用日历形式选择日期的组件。

实例程序 samp4_5 演示这些时间日期相关类的使用,其运行时界面如图 1 所示。

图 1 实例 samp4_5 运行时界面
日期时间数据与字符串之间的转换
时间、日期编辑器属性设置
在图 1 窗体左上方的“日期时间”Groupbox 中,使用 QTimeEdit、QDateEdit、QDateTimeEdit 组件作为时间、日期、日期时间编辑器;在其右侧,各放置一个 QLineEdit 组件用于字符串显示。

QDateEdit 和 QTimeEdit 都从 QDateTimeEdit 继承而来,实现针对日期或时间的特定显示功能。实际上,QDateEdit 和 QTimeEdit 的显示功能都可以通过 QDateTimeEdit 实现,只需设置好属性即可。

QDateTimeEdit 类的主要属性的介绍如下:
• datetime:日期时间。
• date:日期,设置 datetime 时会自动改变 date,同样,设置 date 时,也会自动改变 datetime 里的日期。
• time:时间,设置 datetime 时会自动改变 time,同样,设置 time 时,也会自动改变 datetime 里的时间。
• maximumDateTime、 minimumDateTime:最大、最小日期时间。
• maximumDate、minimumDate:最大、最小日期。
• maximumTime、minimumTime:最大、最小时间。
• currentSection:当前输入光标所在的时间日期数据段,是枚举类型 QDateTimeEdit::Section。QDateTimeEdit 显示日期时间数据时分为多个段,单击编辑框右侧的上下按钮可修改当前段的值。如输入光标在YearSection段,就修改“年”的值。
• currentSectionIndex:用序号表示的输入光标所在的段。
• calendarPopup:是否允许弹出一个日历选择框。当取值为 true 时,右侧的输入按钮变成与 QComboBox 类似的下拉按钮,单击按钮时出现一个日历选择框,用于在日历上选择日期。对于 QTimeEdit,此属性无效。
• displayFormat:显示格式,日期时间数据的显示格式,例如设置为“yyyy-MM-dd HH:mm:ss”,一个日期时间数据就显示为“2016-11-02 08:23:46”。
日期时间数据的获取与转换为字符串
“读取当前日期时间”按钮的 clicked() 信号的槽函数代码如下:

  1. void Dialog::on_btnGetTime_clicked()
  2. {
  3.  //获取当前日期时间,为三个专用编辑器设置日期时间数据,并转换为字符串
    
  4.  QDateTime curDateTime=QDateTime::currentDateTime();
    
  5.  ui->timeEdit->setTime(curDateTime.time());
    
  6.  ui->editTime->setText (curDateTime.toString ("hh:mm: ss11));
    
  7.  ui->dateEdit->setDate(curDateTime.date());
    
  8.  ui->editDate->setText(curDateTime.toString("yyyy-MM-dd"));
    
  9.  ui->dateTimeEdit->setDateTime(curDateTime);
    
  10. ui->editDateTime->setText(curDateTime.toString("yyyy-MM-dd hh:mm:ss"));
    
  11. }
    首先用 QDateTime 类的静态函数 currentDateTime() 获取当前日期时间,并赋值给变量 curDate Time。

然后用 curDateTime 变量设置界面上 3 个日期、时间编辑器的时间或日期值,利用了 QDateTime 的 time() 和 date() 分别提取时间和日期。

将 curDateTime 表示的日期时间数据转换为字符串,然后在 LineEdit 编辑框上显示。时间日期转换为字符串使用了 QDateTime 的 toString() 函数,分别用不同的格式显示时间、日期、日期时间:

  1. ui->editTime->setText(curDateTime.toString(Mhh:mm:ss"));
  2. ui->editDate->setText(curDateTime.toString(“yyyy-MM-dd”));
  3. ui->editDateTime->setText(curDateTime.toString(“yyyy-MM-dd hh:mm:ss”));
    QDateTime::toString() 函数的函数原型是:
    QString QDateTime::toString(const QString fiformat) const
    它将日期时间数据按照 format 指定的格式转换为字符串。format 是一个字符串,包含一些特定的字符,表示日期或时间的各个部分,表 2 是用于日期时间显示的常用格式符。
    表 2 用于日期显示的格式符及其意义
    字符 意义
    d 天,不补零显示,1-31
    dd 天,补零显示,01-31
    M 月,不补零显示,1-12
    MM 月,补零显示,01-12
    yy 年,两位显示,00-99
    yyyy 年,4位数字显示,如 2016
    h 小时,不补零,0-23 或 1-12 (如果显示 AM/PM)
    hh 小时,补零2位显示,00-23 或 01-12 (如果显示 AM/PM)
    H 小时,不补零,0-23 (即使显示 AM/PM)
    HH 小时,补零显示,00-23 (即使显示 AM/PM)
    m 分钟,不补零,0-59
    mm 分钟,补零显示,00-59
    z 毫秒,不补零,0-999
    zzz 毫秒,补零 3 位显示,000-999
    AP或A 使用 AM/pm 显示
    ap或a 使用 am/pm 显示

在设置日期时间显示字符串格式时,还可以使用填字符,甚至使用汉字。例如,日期显示格式可以设置为:
curDateTime.toString (“yyyy 年 MM 月 dd 日”);
这样得到的字符串是“2016年11月21日”。
字符串转换为日期时间
同样的,也可以将字符串转换为 QTime、QDate 或 QDateTime 类型,使用静态函数 QDateTime::fromString(),其函数原型为:
QDateTime QDateTime::fromString(const QString &string, const QString &format)
其中,第 1 个参数 string 是日期时间字符串形式,第 2 个参数 format 是字符串表示的格式,按照表 2 的格式字符定义。

在程序运行时,手工修改“日期时间”后面文本框里的日期时间字符串,单击“设置日期时间”按钮,可以将文本框里的字符串转换为 QDateTime 变量,并设置为左侧 DateTimeEdit 组件的日期时间数据,代码如下:

  1. void Dialog::on_btnSetDateTime_clicked()
  2. {
  3.  //字符串转换为QDateTime
    
  4.  QString str=ui->editDateTime->text();
    
  5.  str=str.trimmed();
    
  6.  if (!str.isEmpty())
    
  7.  {
    
  8.      QDateTime datetime=QDateTime::fromString(str,"yyyy-MM-dd hh:mm:ss");
    
  9.      ui->dateTimeEdit->setDateTime(datetime);
    
  10. }
    
  11. }
    静态函数 QDateTime::fromString() 将一个字符串按照格式转换为日期时间类型。程序中的代码是:
    datetime=QDateTime::fromString(str,“yyyy-MM-dd hh:mm:ss”);
    这里将字符串 str 按照格式 yyyy-MM-dd hh:mm:ss 转换为日期时间变量,格式是指字符串 str 所表示的日期时间的格式。
    QCalendarWidget 日历组件
    图 1 窗体右侧是一个 QCalendarWidget 组件,它以日历的形式显示日期,可以用于日期选择。QCalendarWidget 有一个信号 selectionChanged(),在日历上选择的日期变化后会发射此信号,为此信号创建槽函数,编写代码如下:
    纯文本复制
  12. void Dialog::on_calendarWidget_selectionChanged()
  13. {
  14.  //在日历上选择日期
    
  15.  QDate dt=ui->calendarWidget->selectedDate();
    
  16.  QString str=dt.toString("yyyy年 M 月 d 日");
    
  17.  ui->editCalendar->setText(str);
    
  18. }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt获取当前时间(超详细) 的相关文章

  • QML 列表视图拖放

    我想创建两个 qml 列表视图 可以执行两个功能 拖放一个列表中的项目以更改项目的顺序 跨列表拖放项目 项目将从一个列表中删除并添加到另一个列表中 根据 Qt 文档中的拖放示例 我决定创建两个访问同一列表模型的列表视图 列表模型中的每个项目
  • 通过单击内部小部件而不是标题栏来移动窗口

    在 Windows 中 当我创建 QMainWindow 时 我可以通过单击标题栏并拖动它来在屏幕上移动它 在我的应用程序中 我使用隐藏了标题栏setWindowFlags Qt CustomizeWindowHint 我正在尝试使用小部件
  • Linux 上的静态 Qt5 构建:部署时如何处理字体?

    我使用这些配置选项创建了 Qt 5 2 0 库的静态版本 Ubuntu 12 04 开源 确认许可 force pkg config 发布 静止的 前缀 home juzzlin qt5 无icu opengl桌面 无油嘴滑舌 辅助功能 n
  • 使 QLabel 的像素图透明

    我有一个带有 QLabel 和像素图的主窗口 我想让它透明 或不那么不透明 我正在使用下面的代码 ui gt label gt setAttribute Qt WA TranslucentBackground ui gt label gt
  • Qt:更改 Mac OS X 上的应用程序 QMenuBar 内容

    我的应用程序对多个 页面 使用 QTabWidget 其中顶级菜单根据用户所在的页面而变化 我的问题是 尝试重新创建菜单栏的内容会导致严重的显示问题 它在除 Mac OS X 之外的所有平台上按预期使用第一种和第三种样式 尚未测试第二种 但
  • 在 Qt GraphicsView 中创建长线(或十字线)光标的最佳方法

    创建长十字线光标 与视口一样长 的简单方法是创建一条十字线graphicsItem 当鼠标移动时 设置该项目的pos财产 但是当场景复杂时这种方式会很慢 因为它要更新整个视口来更新光标的pos 另一种简单的方法是setCursor QCur
  • QFileDialog::getOpenFileName 调试时崩溃,显然是由项目名称引起的?

    我遇到了一个让我非常困惑的问题 我在 Windows 7 上使用 Qt Creator 3 1 2 和 Qt 5 3 使用 MSVC 10 0 编译器和 Windows 8 1 调试工具中的 CDB 不确定我是否应该寻找特定于 Window
  • 使用 QGraphicsScene 和 QGraphicsView 在 Qt 中开始基于 Tile 的游戏

    我将开始在 Qt 中编写基于 2D 图块的游戏 并阅读 QGraphicsScene 和 QGraphicsView 类 这些类旨在显示和处理大量 2D 对象 我的问题是 使用 QGraphicsScene 创建一个包含大量图块的世界是否可
  • 使用 QNetworkAccessManager 的 Qt 控制台应用程序

    我正在尝试写一个Qt调用网络服务的应用程序 这是一个控制台应用程序 url 将作为命令行参数传入 我搜索了例如http程序在Qt并找到这个链接 http qt project org doc qt 5 qnetworkaccessmanag
  • 为什么动态 qml 对象的创建如此缓慢,有哪些合理的替代方案?

    我想要实现的目标类似于棋盘游戏 有一个100 100的网格 放在一个Item它驻留在一个Flickable 游戏板 的各个矩形都是 svg 图像 目前大约有 20 种 可能会增加到数百种 作为基准测试 我只是尝试用元素填充 世界 Compo
  • 如何为 Windows 安装开源 Qt 库 5 二进制版本

    这个问题具体是关于Qt libraries 5 0 0 for Windows VS 2010 406 MB at http qt project org downloads http qt project org downloads 但我
  • 使用 QWT 构建时出错

    我收到一个错误 undefined reference to QwtPlot QwtPlot QWidget 当我尝试构建我的项目时 即使设置中一切看起来都很好 在我的 CmakeLists txt 中我有 include director
  • 使用 qbs 构建 qt 应用程序

    我想知道在 Linux 上使用 qbs 编译 构建和创建 Android Qt 应用程序的步骤 我拥有所有必要的工具 目前我可以使用 qmake 创建 apk Qbs 目前不支持构建 Qt Android 应用程序 Qbs v1 4 中引入
  • 一个具有完全透明背景的qt小部件

    我需要创建一个 qt 小部件 它将充当其他一些小部件的父级 并对它们进行排序 现在的问题是如何使其背景完全透明 我想这样做 struct Imp Imp QWidget parent thisWidget new QWidget paren
  • 通过信号/槽将 QVector 从工作线程传递到主线程

    目前 我在将 QVector 传递到线程之间时遇到一些麻烦 目前我有一个主线程 GUI Thread 和一个频繁发出 QVector 数组的工作线程 在向量内直接发出数据之前看起来不错 接收者是主线程中的一个槽 但该槽接收到的数据是乱码 这
  • 仅具有年/月视图的 PyQt 日历

    在 Qt Designer 中 QDateTimeEdit 具有日历视图选项 通过设置显示格式 我只能显示月 年 但是 当用户单击视图时 它会自动显示每日日历 有没有办法让它只显示月 年日历 为了形象地解释一下 Windows 日历具有与
  • 如何释放Qthread对象的内存?

    我做过这样的事情 in the mainwindow s constructor QThread thr new QThread soundWorker work new soundWorker connect this SIGNAL pl
  • 从 QTableView 读取和写入文件

    如何读取和写入输入 QTableView 的文本文件日期 这就是我所拥有的 但我想在将数据添加到表中时保存数据 当然能够在重新打开应用程序时读回它 有什么教程可以参考吗 MainWindow MainWindow QWidget paren
  • QNetworkAccessManager 的替代方案

    我正在BB10中绘制地图 地图被划分为图块 开始时 用户给出经度 纬度和缩放级别 地图将显示在该坐标处 我通过使用 QNetworkAccessManager 执行 http 请求来获得单个图块 首先下载 7x5 块 但问题是 当用户开始在
  • 如何禁用滚轮事件 QGraphicsView Qt C++ 上的滚动功能

    我有一个图形视图 并且我设置了自己的功能 以便在用户按下 Control 并单击鼠标时手动拖动滚动 我已经删除了滚动条 但鼠标滚轮仍然会滚动 甚至滚动到显示在图像中的图像qGraphicsView显示我的手拖动没有的空白 白色 空间 我怎样

随机推荐

  • tms web core 调用webapi的方法

    webhttprequest组件属性设置 header Cache Control no cache no store must revalidate Content Type application x www form urlencod
  • 紫书《算法竞赛入门经典》

    紫书 算法竞赛入门经典 题目一览 第3章 数组和字符串 例题 UVA 272 TEX Quotes UVA 10082 WERTYU UVA 401 Palindromes UVA 340 Master Mind Hints UVA 158
  • 利用StringEscapeUtils对字符串进行各种转义与反转义(Java)

    转载自 Java我人生 陈磊兴 原文出处 http blog csdn net chenleixing article details 43456987 apache工具包common lang中有一个很有用的处理字符串的工具类 其中之一就
  • renren-generator项目启动后无法打开网页

    解决
  • JavaScript对象的定义以及创建对象的三种方式和遍历对象的介绍以及相对应的案例

    JavaScript对象 1 什么是对象 在JavaScript中 对象是一组无序的相关属性和方法的集合 所有的事物都是对象 例如字符串 数值 数组 函数等 对象是由属性和方法组成的 属性 事物的特征 在对象中用属性来表示 常用名词 方法
  • ElasticSearch 之 _score

    ElasticSearch 之 score 1 什么是 score 2 布尔模型 3 词频 逆向文档频率 TF IDF 3 1 词频 3 2 逆向文档频率 3 3 字段长度归一值 3 4 结合使用 4 向量空间模型 5 Lucene的实用评
  • MySQL免安装版下载及安装(完整版)

    1 安装包下载 1 进入官网下载 MySQL Download MySQL Community Server Archived Versions 2 压缩包解压到你要安装的位置 2 MySQL配置 1 以管理员身份打开命令 2 跳转到MyS
  • 圆形图片

    public class RoundImageView extends ImageView public RoundImageView Context context super context TODO Auto generated co
  • 期货,实例讲述

    说到 期货 有人马上就会想到一大堆的粮食或者金属品的满天飞 其实不然 如果要每个人都抱一大堆的粮食回家的话我想经纪公司存在也没有它实质的意义了 其实对于大多数的投机者来说 期货 就和 股票 一样 都是一种低买高卖的挣钱工具 它并不需要你把一
  • 分布式复习1~3章

    参考 学校ppt 整体 爹 https zhuanlan zhihu com p 341814546 时间和时钟 https blog csdn net fragile98 article details 113695334 分布式系统的时
  • 利用ESP8266模块实现远程用手机控制开关

    利用ESP8266模块实现远程用手机控制开关 文章目录 前言 一 ESP8266是什么 二 使用步骤 1 密钥与核心库 2 连接Wi Fi 3 手机端控制函数 总结 插入链接与图片 列表 前言 随着万物联网的时代到来 通过互联网来控制已经越
  • AIGC 的概念与内涵

    导读 目前 对AIGC这一概念的界定 尚无统一规范的定义 国内产学研各界对于AIGC的理解是 继专业生成内容 ProfessionalGeneratedContent PGC 和用户生成内容 UserGeneratedContent UGC
  • 多线程-线程通信(wait-notify,await-single,park-unpark)

    在多线程场景中 如有些线程需要依赖另外线程的结果而继续执行 如多个线程处理请求 有的处理的快有点慢 快的需要等待慢的线程结果一起提交执行结果 都会涉及到线程间的通信 就是A线程告知B线程处理的结果是怎么样 B线程再执行对应逻辑 通信比较经典
  • Laravel从入门到实践

    Laravel从入门到实践 版本 Laravel版本 8 75 0 安装与配置 使用Docker 安装项目 curl s https laravel build betterlife bash 启动项目 cd betterlife vend
  • 笔记:RTSP在线视频流资源地址

    1 在线视频流地址 rtsp wowzaec2demo streamlock net vod mp4 BigBuckBunny 115k mov 2 播放软件 vlc 下载地址 Downloads VideoLAN 使用如下 打开媒体 打开
  • 股票集合竞价规则详解,什么是集合竞价?集合竞价技巧分析

    股票集合竞价规则是每一个新入股市的朋友都应该首先掌握的一个知识要点 然而很多新入市的朋友对于股票集合竞价规则了解的是很少的 今天为了帮助更多的朋友掌握这个规则 笔者作为金融市场的铁杆粉丝 从三年前开始 就对金融市场的理论和实践方面的认识逐渐
  • 【空气检测仪专题】9.画PCB图

    空气检测仪专题 9 画PCB图 移植了EmWin并写了demo程序 效果如下 很久没有画PCB图了 慢慢画呗
  • 北大网站服务器关闭,北京大学网络服务

    nbsp 1 如何在Windows2000环境下配置静态IP地址 第一步 选择 控制面板 选择 网络和拨号连接 第二步 鼠标右键选择 本地连接 或者相应的网卡名称 选择 属性 第三步 选择 TCP IP协议 第四步 配置相应的参数 IP地址
  • 查看SELinux状态&关闭SELinux

    1 查看SELinux状态 1 1 getenforce getenforce 命令是单词get 获取 和enforce 执行 连写 可查看selinux状态 与setenforce命令相反 setenforce 命令则是单词set 设置
  • Qt获取当前时间(超详细)

    Qt获取当前时间 超详细 转载自别的网站 时间日期是经常遇到的数据类型 Qt 中时间日期类型的类如下 QTime 时间数据类型 仅表示时间 如15 23 13 QDate 日期数据类型 仅表示日期 如2017 4 5 QDateTime 日