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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!