Qt中QDateTimeEdit的具體使用
一.描述
1.QDateTimeEdit是一個(gè)用來編輯日期和時(shí)間的單行文本框,由于大繼承自QAbstractSpinBox類,可以用箭頭按鈕來調(diào)節(jié)文本內(nèi)容,也可以用鍵盤輸入。在用按鈕修改內(nèi)容時(shí)可以單獨(dú)修改某個(gè)部分(年、月、日、小時(shí)、分)
2.QDateTimeEdit可以用來單獨(dú)顯示日期(QDate),也可以單獨(dú)顯示時(shí)間(QTime),當(dāng)然也可以顯示日期時(shí)間(QDateTime)
二.QDateTime的使用
QDateTime是用來描述日期和時(shí)間的對(duì)象,他是QDate和QTime兩個(gè)類的組合,包含了年月日/小時(shí)分秒毫秒。
1、構(gòu)造函數(shù)
按照下面的方式構(gòu)造對(duì)象都是可以的。
QDate mdate = QDate(2012,1,1); QTime mtime = QTime(12,12,12); QDateTime mdate1 = QDateTime(mdate); QDateTime mdate3 = QDateTime(mdate,mtime);
2、計(jì)算時(shí)間差
int utc_time = m_datetime.offsetFromUtc(); //與標(biāo)準(zhǔn)時(shí)區(qū)的時(shí)間差 qDebug()<<"utc 時(shí)間差"<<utc_time; QDate m_date1 = QDate(2012,10,2); int day_cnt = m_date1.daysTo(QDate::currentDate()); qDebug()<<"相差天數(shù)"<<day_cnt;
3、獲取時(shí)間
QDateTime datetime = QDateTime::currentDateTime(); qDebug()<<"當(dāng)前時(shí)間"<<datetime; QDate date = QDate::currentDate(); qDebug()<<"當(dāng)前日期"<<date; QTime time = QTime::currentTime(); qDebug()<<"當(dāng)前time"<<time; int day = date.day(); qDebug()<<"當(dāng)前月下第幾日"<<day; int month = date.month(); qDebug()<<"第幾月"<<month; int year = date.year(); qDebug()<<"哪一年"<<year; int month_day_num = date.daysInMonth(); qDebug()<<"當(dāng)前月有多少天"<<month_day_num; int year_day_num = date.daysInYear(); qDebug()<<"當(dāng)前年有多少天"<<year_day_num;
三.QDateTimeEdit的應(yīng)用
1.構(gòu)造函數(shù)
m_DateTimeEdit = new QDateTimeEdit(QDateTime::currentDateTime(),this); m_DateTimeEdit = new QDateTimeEdit(QDate::currentDate(),this); m_DateTimeEdit = new QDateTimeEdit(QTime::currentTime(),this);
2.顯示格式
QDateTImeEdit里每一個(gè)部分(年月日時(shí)分秒)都是一個(gè)section,我們可以根據(jù)指定的樣式來改變顯示格式
m_DateTimeEdit->setDisplayFormat("yyyy-MM-dd-hh-mm-ss");
指定的格式有時(shí)間格式符,可以直接使用
h -----------------沒有前導(dǎo)0的小時(shí)(0——12或0——23)
hh ---------------有前導(dǎo)0的小時(shí)(00——12或00——23)
H -----------------沒有前導(dǎo)0的顯示(0——23)
HH ---------------有前導(dǎo)0的顯示(00——23)
m -----------------沒有前導(dǎo)0的分鐘(0——59)
mm --------------有前導(dǎo)0的分鐘(00——59)
s ------------------沒有前導(dǎo)0的秒(0——59)
ss -----------------有前導(dǎo)0的秒(00——59)
z -------------------第二個(gè)小數(shù)部分,沒有尾隨0的毫秒(0——999)
zzz ----------------第二個(gè)小數(shù)部分,有尾隨0的毫秒(000——999)
AP/A --------------用AM/PM顯示(只用一種就可以)
ap/a ---------------用am/pm顯示
t --------------------時(shí)區(qū)
還有日期的格式符
d -------------- 沒有前導(dǎo)0的數(shù)字日期(1——31)
dd ------------ 有前導(dǎo)0的數(shù)字日期(01——31)
ddd ----------- 縮寫的本地化日期名稱(周日——周六,Sun——Sat)
dddd ---------- 完整的本地化日期名稱(星期日——星期六)
M -------------- 沒有前導(dǎo)0的數(shù)字月(1——12月)
MM ------------ 有前導(dǎo)0的數(shù)字月(01——12)
MMM --------- 縮寫的本地化月份(1月——12月)
MMMM ------- 完整的本地化月份(一月——十二月)
yy -------------- 年的后兩位
yyyy ----------- 年(4位)
效果如下:
3.日歷選擇控件
m_DateTimeEdit->setCalendarPopup(true);
效果如下:
四.信號(hào)
日期發(fā)生改變
信號(hào)中都傳遞了相對(duì)應(yīng)的QDateTime或QDate的參數(shù)。要注意的是信號(hào)發(fā)出是在數(shù)據(jù)徹底發(fā)生改變后,比如用鍵盤輸入年份,只有當(dāng)2019全輸入后才會(huì)發(fā)送信號(hào)。
QDateTimeEdit::dateTimeChanged() //日期時(shí)間發(fā)生改變 QDateTimeEdit::dateChanged() //日期發(fā)生改變 QDateTimeEdit::timeChanged() //時(shí)間發(fā)生改變
源碼:
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(); //與標(biāo)準(zhǔn)時(shí)區(qū)的時(shí)間差 qDebug()<<"utc 時(shí)間差"<<utc_time; QDate m_date1 = QDate(2012,10,2); int day_cnt = m_date1.daysTo(QDate::currentDate()); qDebug()<<"相差天數(shù)"<<day_cnt; QDateTime datetime = QDateTime::currentDateTime(); qDebug()<<"當(dāng)前時(shí)間"<<datetime; QDate date = QDate::currentDate(); qDebug()<<"當(dāng)前日期"<<date; QTime time = QTime::currentTime(); qDebug()<<"當(dāng)前time"<<time; int day = date.day(); qDebug()<<"當(dāng)前月下第幾日"<<day; int month = date.month(); qDebug()<<"第幾月"<<month; int year = date.year(); qDebug()<<"哪一年"<<year; int month_day_num = date.daysInMonth(); qDebug()<<"當(dāng)前月有多少天"<<month_day_num; int year_day_num = date.daysInYear(); qDebug()<<"當(dāng)前年有多少天"<<year_day_num; m_DateTimeEdit->setDisplayFormat("yyyy-MM-dd-hh-mm-ss"); m_DateTimeEdit->setCalendarPopup(true); } MainWindow::~MainWindow() { delete ui; }
到此這篇關(guān)于Qt中QDateTimeEdit的具體使用的文章就介紹到這了,更多相關(guān)Qt QDateTimeEdit內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決C++ 無法從void 轉(zhuǎn)換為L(zhǎng)RESULT的方法詳解
本篇文章是對(duì)C++中無法從void轉(zhuǎn)換為L(zhǎng)RESULT的解決方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05C++ 實(shí)現(xiàn)對(duì)象的克隆 (多種方法)
在 C++ 中,對(duì)象的克隆通常通過實(shí)現(xiàn)一個(gè)克隆接口來完成,該接口允許創(chuàng)建對(duì)象的深拷貝,下面是實(shí)現(xiàn)對(duì)象克隆的幾種方法,具體取決于需要克隆的對(duì)象類型和上下文,感興趣的朋友跟隨小編一起看看吧2024-12-12C++使用htslib庫(kù)讀入和寫出bam文件的實(shí)例
下面小編就為大家分享一篇C++使用htslib庫(kù)讀入和寫出bam文件的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2017-11-11c++ 寫注冊(cè)表方式讓程序開機(jī)自啟動(dòng)
這篇文章主要介紹了c++ 寫注冊(cè)表方式讓程序開機(jī)自啟動(dòng),需要的朋友可以參考下2017-09-09c語言實(shí)現(xiàn)簡(jiǎn)易版三子棋(附完整代碼)
大家好,本篇文章主要講的是c語言實(shí)現(xiàn)簡(jiǎn)易版三子棋(附完整代碼),感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下2022-01-01VS2022+libtorch+Cuda11.3安裝測(cè)試教程詳解(調(diào)用cuda)
這篇文章主要介紹了VS2022+libtorch+Cuda11.3安裝測(cè)試(調(diào)用cuda),本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05