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++中的常量定义小结

    在C++中,并不提倡使用#define定义一个常量。#define本质上是一个预处理器指令,它仅仅表示使用一个串代替别一个串而已。也就是说,#define定义的常量从未被编译器看到——它们在编译器开始处理源码之前就被移走了
    2015-08-08
  • 用C++实现SLR语法分析程序

    用C++实现SLR语法分析程序

    大家好,本篇文章主要讲的是用C++实现SLR语法分析程序,感兴趣的同学赶紧来看一看吧,对你有帮助的话记得收藏一下
    2022-02-02
  • VC++中HTControl的CHTButton按钮控件类用法实例解析

    VC++中HTControl的CHTButton按钮控件类用法实例解析

    这篇文章主要介绍了VC++中HTControl的CHTButton按钮控件类用法,对于大家进行VC++项目开发有一定的帮助作用,需要的朋友可以参考下
    2014-08-08
  • C语言版猜数字小游戏

    C语言版猜数字小游戏

    这篇文章主要为大家详细介绍了C语言版猜数字小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • C++使用函数的一些高级操作指南

    C++使用函数的一些高级操作指南

    C++中函数调用的方法与C语言并无区别,依旧是在调用方函数中执行函数调用语句来实现函数调用,下面这篇文章主要给大家介绍了关于C++使用函数的一些高级操作,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-12-12
  • Matlab实现极坐标堆叠柱状图的绘制

    Matlab实现极坐标堆叠柱状图的绘制

    极坐标堆叠图也是风玫瑰图的常用形式,MATLAB的bar绘制的条形图可以绘制成堆叠形式,但是并没有一个自带函数可以绘制极坐标堆叠图。本文将为大家提供Matlab绘制极坐标堆叠柱状图的示例代码,需要的可以参考一下
    2022-08-08
  • C++标准模板库函数sort的那些事儿

    C++标准模板库函数sort的那些事儿

    sort函数是标准模板库的函数,已知开始和结束的地址即可进行排序,可以用于比较任何容器(必须满足随机迭代器),任何元素,任何条件,执行速度一般比qsort要快
    2013-09-09
  • C++ Boost Array与Unordered使用介绍

    C++ Boost Array与Unordered使用介绍

    Boost是为C++语言标准库提供扩展的一些C++程序库的总称。Boost库是一个可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一,是为C++语言标准库提供扩展的一些C++程序库的总称
    2022-11-11
  • 详解如何将Spire.XLS for C++集成到C++程序中

    详解如何将Spire.XLS for C++集成到C++程序中

    Spire.XLS for C++ 是一个 Excel 库,供开发人员在任何类型的 C++ 应用程序中操作 Excel 文档(XLS、XLSX、XLSB 和 XLSM)。 本文演示了如何以两种不同的方式将 Spire.XLS for C++ 集成到您的 C++ 应用程序中
    2023-03-03
  • Visual Studio下Eigen库环境配置方式

    Visual Studio下Eigen库环境配置方式

    这篇文章主要介绍了Visual Studio下Eigen库环境配置方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12

最新评论