Qt中QDateTimeEdit的具体使用

 更新时间:2023年06月06日 09:48:48   作者:嵌入式小龙  
本文主要介绍了Qt中QDateTimeEdit的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

一.描述

1.QDateTimeEdit是一个用来编辑日期和时间的单行文本框,由于大继承自QAbstractSpinBox类,可以用箭头按钮来调节文本内容,也可以用键盘输入。在用按钮修改内容时可以单独修改某个部分(年、月、日、小时、分)

2.QDateTimeEdit可以用来单独显示日期(QDate),也可以单独显示时间(QTime),当然也可以显示日期时间(QDateTime)

二.QDateTime的使用

QDateTime是用来描述日期和时间的对象,他是QDate和QTime两个类的组合,包含了年月日/小时分秒毫秒。

1、构造函数

按照下面的方式构造对象都是可以的。

QDate mdate = QDate(2012,1,1);
QTime mtime = QTime(12,12,12);
QDateTime mdate1 = QDateTime(mdate);
QDateTime mdate3 = QDateTime(mdate,mtime);

2、计算时间差

int utc_time = m_datetime.offsetFromUtc();      //与标准时区的时间差
qDebug()<<"utc 时间差"<<utc_time;
QDate m_date1 = QDate(2012,10,2);
int day_cnt = m_date1.daysTo(QDate::currentDate());
qDebug()<<"相差天数"<<day_cnt;

3、获取时间

QDateTime datetime = QDateTime::currentDateTime();
qDebug()<<"当前时间"<<datetime;
QDate date = QDate::currentDate();
qDebug()<<"当前日期"<<date;
QTime time = QTime::currentTime();
qDebug()<<"当前time"<<time;
int day = date.day();
qDebug()<<"当前月下第几日"<<day;
int month = date.month();
qDebug()<<"第几月"<<month;
int year = date.year();
qDebug()<<"哪一年"<<year;
int month_day_num = date.daysInMonth();
qDebug()<<"当前月有多少天"<<month_day_num;
int year_day_num = date.daysInYear();
qDebug()<<"当前年有多少天"<<year_day_num;

三.QDateTimeEdit的应用

1.构造函数

m_DateTimeEdit = new QDateTimeEdit(QDateTime::currentDateTime(),this);
m_DateTimeEdit = new QDateTimeEdit(QDate::currentDate(),this);
m_DateTimeEdit = new QDateTimeEdit(QTime::currentTime(),this);

2.显示格式

QDateTImeEdit里每一个部分(年月日时分秒)都是一个section,我们可以根据指定的样式来改变显示格式

m_DateTimeEdit->setDisplayFormat("yyyy-MM-dd-hh-mm-ss");

指定的格式有时间格式符,可以直接使用

h -----------------没有前导0的小时(0——12或0——23)
hh ---------------有前导0的小时(00——12或00——23)
H -----------------没有前导0的显示(0——23)
HH ---------------有前导0的显示(00——23)
m -----------------没有前导0的分钟(0——59)
mm --------------有前导0的分钟(00——59)
s ------------------没有前导0的秒(0——59)
ss -----------------有前导0的秒(00——59)
z -------------------第二个小数部分,没有尾随0的毫秒(0——999)
zzz ----------------第二个小数部分,有尾随0的毫秒(000——999)
AP/A --------------用AM/PM显示(只用一种就可以)
ap/a ---------------用am/pm显示
t --------------------时区

还有日期的格式符

d -------------- 没有前导0的数字日期(1——31)
dd ------------ 有前导0的数字日期(01——31)
ddd ----------- 缩写的本地化日期名称(周日——周六,Sun——Sat)
dddd ---------- 完整的本地化日期名称(星期日——星期六)
M -------------- 没有前导0的数字月(1——12月)
MM ------------ 有前导0的数字月(01——12)
MMM --------- 缩写的本地化月份(1月——12月)
MMMM ------- 完整的本地化月份(一月——十二月)
yy -------------- 年的后两位
yyyy ----------- 年(4位)

效果如下:

3.日历选择控件

m_DateTimeEdit->setCalendarPopup(true);

效果如下:

四.信号

日期发生改变

信号中都传递了相对应的QDateTime或QDate的参数。要注意的是信号发出是在数据彻底发生改变后,比如用键盘输入年份,只有当2019全输入后才会发送信号。

QDateTimeEdit::dateTimeChanged()     //日期时间发生改变    
QDateTimeEdit::dateChanged()         //日期发生改变    
QDateTimeEdit::timeChanged()         //时间发生改变

源码:

mainwindow.c

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    this->resize(800,600);
    QDateTime m_datetime = QDateTime::currentDateTime();
    QDate mdate = QDate(2012,1,1);
    QTime mtime = QTime(12,12,12);
    QDateTime mdate1 = QDateTime(mdate);
    QDateTime mdate3 = QDateTime(mdate,mtime);
    m_DateTimeEdit = new QDateTimeEdit(m_datetime,this);
//    m_DateTimeEdit = new QDateTimeEdit(QDate::currentDate(),this);
//    m_DateTimeEdit = new QDateTimeEdit(QTime::currentTime(),this);
    m_DateTimeEdit->setGeometry(100,100,200,40);
    int utc_time = m_datetime.offsetFromUtc();      //与标准时区的时间差
    qDebug()<<"utc 时间差"<<utc_time;
    QDate m_date1 = QDate(2012,10,2);
    int day_cnt = m_date1.daysTo(QDate::currentDate());
    qDebug()<<"相差天数"<<day_cnt;
    QDateTime datetime = QDateTime::currentDateTime();
    qDebug()<<"当前时间"<<datetime;
    QDate date = QDate::currentDate();
    qDebug()<<"当前日期"<<date;
    QTime time = QTime::currentTime();
    qDebug()<<"当前time"<<time;
    int day = date.day();
    qDebug()<<"当前月下第几日"<<day;
    int month = date.month();
    qDebug()<<"第几月"<<month;
    int year = date.year();
    qDebug()<<"哪一年"<<year;
    int month_day_num = date.daysInMonth();
    qDebug()<<"当前月有多少天"<<month_day_num;
    int year_day_num = date.daysInYear();
    qDebug()<<"当前年有多少天"<<year_day_num;
    m_DateTimeEdit->setDisplayFormat("yyyy-MM-dd-hh-mm-ss");
    m_DateTimeEdit->setCalendarPopup(true);
}
MainWindow::~MainWindow()
{
    delete ui;
}

到此这篇关于Qt中QDateTimeEdit的具体使用的文章就介绍到这了,更多相关Qt QDateTimeEdit内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 教你分辨C++堆与栈的区别

    教你分辨C++堆与栈的区别

    堆与栈的区别有:1、栈由系统自动分配,而堆是人为申请开辟;2、栈获得的空间较小,而堆获得的空间较大;3、栈由系统自动分配,速度较快,而堆一般速度比较慢;4、栈是连续的空间,而堆是不连续的空间
    2021-06-06
  • C语言入门篇--注释,关键字typedef及转义字符详解

    C语言入门篇--注释,关键字typedef及转义字符详解

    本篇文章是c语言基础篇,主要为大家介绍了C语言的关键字typedef,注释,转义字符的基本理论知识,希望可以帮助大家快速入门c语言的世界,更好的理解c语言
    2021-08-08
  • C++ STL中的容器适配器实现

    C++ STL中的容器适配器实现

    这篇文章主要介绍了C++ STL中的容器适配器实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • VC获取当前路径及程序名的实现代码

    VC获取当前路径及程序名的实现代码

    VC上或取当前路径有多种方法,最常用的是使用 GetCurrentDirectory和GetModuleFileName函数,个中都有诸多注意事项,特别总结一下
    2016-11-11
  • OpenCV实现多图像拼接成一张大图

    OpenCV实现多图像拼接成一张大图

    这篇文章主要为大家详细介绍了OpenCV实现多图像拼接成一张大图,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01
  • C++中的自定义函数返回类型

    C++中的自定义函数返回类型

    这篇文章主要介绍了C++中的自定义函数返回类型,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • 一篇带你了解C语言--位操作详情

    一篇带你了解C语言--位操作详情

    这篇文章主要介绍了关于C语言位运算的简单示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-08-08
  • 采用C++实现区间图着色问题(贪心算法)实例详解

    采用C++实现区间图着色问题(贪心算法)实例详解

    这篇文章主要介绍了采用C++实现区间图着色问题(贪心算法),很经典的算法问题,需要的朋友可以参考下
    2014-07-07
  • 分享一下8年C++面向对象设计的经验体会

    分享一下8年C++面向对象设计的经验体会

    关于C++程序设计的书藉非常多,本章不讲C++的语法,只讲一些小小的编程道理。如果我能早几年明白这些小道理,就可以大大改善数十万行程序的质量了
    2017-07-07
  • C++调用Matlab函数求特征值

    C++调用Matlab函数求特征值

    这篇文章主要为大家详细介绍了C++调用Matlab函数求特征值,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-06-06

最新评论