Qt中QDateTimeEdit的具體使用
一.描述
1.QDateTimeEdit是一個用來編輯日期和時間的單行文本框,由于大繼承自QAbstractSpinBox類,可以用箭頭按鈕來調(diào)節(jié)文本內(nèi)容,也可以用鍵盤輸入。在用按鈕修改內(nèi)容時可以單獨修改某個部分(年、月、日、小時、分)
2.QDateTimeEdit可以用來單獨顯示日期(QDate),也可以單獨顯示時間(QTime),當然也可以顯示日期時間(QDateTime)
二.QDateTime的使用
QDateTime是用來描述日期和時間的對象,他是QDate和QTime兩個類的組合,包含了年月日/小時分秒毫秒。
1、構造函數(shù)
按照下面的方式構造對象都是可以的。
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(); //與標準時區(qū)的時間差 qDebug()<<"utc 時間差"<<utc_time; QDate m_date1 = QDate(2012,10,2); int day_cnt = m_date1.daysTo(QDate::currentDate()); qDebug()<<"相差天數(shù)"<<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.構造函數(shù)
m_DateTimeEdit = new QDateTimeEdit(QDateTime::currentDateTime(),this); m_DateTimeEdit = new QDateTimeEdit(QDate::currentDate(),this); m_DateTimeEdit = new QDateTimeEdit(QTime::currentTime(),this);
2.顯示格式
QDateTImeEdit里每一個部分(年月日時分秒)都是一個section,我們可以根據(jù)指定的樣式來改變顯示格式
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 -------------------第二個小數(shù)部分,沒有尾隨0的毫秒(0——999)
zzz ----------------第二個小數(shù)部分,有尾隨0的毫秒(000——999)
AP/A --------------用AM/PM顯示(只用一種就可以)
ap/a ---------------用am/pm顯示
t --------------------時區(qū)
還有日期的格式符
d -------------- 沒有前導0的數(shù)字日期(1——31)
dd ------------ 有前導0的數(shù)字日期(01——31)
ddd ----------- 縮寫的本地化日期名稱(周日——周六,Sun——Sat)
dddd ---------- 完整的本地化日期名稱(星期日——星期六)
M -------------- 沒有前導0的數(shù)字月(1——12月)
MM ------------ 有前導0的數(shù)字月(01——12)
MMM --------- 縮寫的本地化月份(1月——12月)
MMMM ------- 完整的本地化月份(一月——十二月)
yy -------------- 年的后兩位
yyyy ----------- 年(4位)
效果如下:

3.日歷選擇控件
m_DateTimeEdit->setCalendarPopup(true);
效果如下:

四.信號
日期發(fā)生改變
信號中都傳遞了相對應的QDateTime或QDate的參數(shù)。要注意的是信號發(fā)出是在數(shù)據(jù)徹底發(fā)生改變后,比如用鍵盤輸入年份,只有當2019全輸入后才會發(fā)送信號。
QDateTimeEdit::dateTimeChanged() //日期時間發(fā)生改變 QDateTimeEdit::dateChanged() //日期發(fā)生改變 QDateTimeEdit::timeChanged() //時間發(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(); //與標準時區(qū)的時間差
qDebug()<<"utc 時間差"<<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()<<"當前時間"<<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內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
VS2022+libtorch+Cuda11.3安裝測試教程詳解(調(diào)用cuda)
這篇文章主要介紹了VS2022+libtorch+Cuda11.3安裝測試(調(diào)用cuda),本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-05-05

