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写一个web服务器之I/O多路复用

    如何用C写一个web服务器之I/O多路复用

    本文主要介绍了如何用C写一个web服务器之I/O多路复用,本次选择了 I/O 模型的优化,因为它是服务器的基础,这个先完成的话,后面的优化就可以选择各个模块来进行,不必进行全局化的改动了。
    2021-05-05
  • 深入理解C++内联函数

    深入理解C++内联函数

    这篇文章主要为大家介绍了C++内联函数,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-01-01
  • C语言 以数据块的形式读写文件详解及实现代码

    C语言 以数据块的形式读写文件详解及实现代码

    本文主要介绍 C语言 以数据块的形式读写文件,这里对相关知识资料做了整理,并附代码示例,以便大家学习参考,有学习此部分知识的朋友可以参考下
    2016-08-08
  • C++实例代码详解友元函数

    C++实例代码详解友元函数

    采用类的机制后实现了数据的隐藏与封装,类的数据成员一般定义为私有成员,成员函数一般定义为公有的,依此提供类与外界间的通信接口。但是,有时需要定义一些函数,这些函数不是类的一部分,但又需要频繁地访问类的数据成员,这时可以将这些函数定义为该类的友元函数
    2022-06-06
  • 利用Debug调试代码解决0xC0000005: 读取位置 0x0000000000000000 时发生访问冲突问题

    利用Debug调试代码解决0xC0000005: 读取位置 0x0000000000000000 时发生访问冲突问

    这篇文章主要介绍了利用Debug调试代码解决0xC0000005: 读取位置 0x0000000000000000 时发生访问冲突,本文给大家分享完美解决方案,需要的朋友可以参考下
    2023-03-03
  • c++线程池实现方法

    c++线程池实现方法

    这篇文章主要介绍了c++线程池实现方法,实例分析了C++线程池的原理与相关实现技巧,需要的朋友可以参考下
    2015-06-06
  • C++ 超详细快速掌握二叉搜索树

    C++ 超详细快速掌握二叉搜索树

    从这篇博客开始,我就要和大家介绍有关二叉搜索树的知识,它还衍生出了两棵树——AVL树和红黑树,在后面两篇博客我都会介绍。今天先从二叉搜索树开始引入
    2022-03-03
  • C++ OpenCV实战之图像透视矫正

    C++ OpenCV实战之图像透视矫正

    这篇文章主要介绍了通过C++ OpenCV实现图像的透视矫正,文中的示例代码讲解详细,对我们的学习或工作有一定的参考价值,感兴趣的可以了解一下
    2022-01-01
  • C++实现移动立方体示例讲解

    C++实现移动立方体示例讲解

    这篇文章主要介绍了C++实现移动立方体,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-12-12
  • 详解C++编程中运算符的使用

    详解C++编程中运算符的使用

    这篇文章主要介绍了详解C++编程中运算符的使用,是C++入门学习中的基础知识,需要的朋友可以参考下
    2015-09-09

最新评论