Qt之QDateEdit和QTimeEdit
簡述
QDateEdit類提供了一個部件,用於編輯日期。QTimeEdit類提供了一個部件,用於編輯時間。
詳細描述
QDateEdit和QTimeEdit均繼承自QDateTimeEdit,許多特性和功能都有QDateTimeEdit提供。這些都是相關屬性:
-
QDateEdit
- date:儲存了部件的顯示日期。
- minimumDate:定義了使用者可以設定的最小日期。
- maximumDate:定義了使用者可以設定的最大日期。
- displayFormat:包含了一個字串用於格式化日期。
-
QTimeEdit
- time:儲存了部件的顯示時間。
- minimumTime:定義了使用者可以設定的最小時間。
- maximumTime:定義了使用者可以設定的最大時間。
- displayFormat:包含了一個字串用於格式化時間。
前面的眾多文章,基本上都在分享的如何使用?本節比較特殊,因為該講的在Qt之QDateTimeEdit一節已經分享過了。下面主要分享QDateEdit和QTimeEdit使用過程中可能遇到的坑。
基本使用
使用QDateEdit時,如果不設定日期,則系統會為其指定一個預設的日期:2000年1月1日。使用QTimeEdit時,如果不設定時間,則系統會為其指定一個預設的時間:0時0分0秒。所以,我們一般都會指定一個合適的日期和時間(當前日期時間)。
QDateEdit *dateEdit = new QDateEdit(QDate::currentDate(), this);
QTimeEdit *timeEdit = new QTimeEdit(QTime::currentTime(), this);
各司其職
如上所述,QDateEdit用於編輯日期,而QTimeEdit用於編輯時間。所以不要用QDateEdit來設定或獲取時間,也不要用QTimeEdit來設定或獲取日期。如果要同時操作日期時間,請使用QDateTimeEdit。
QDateEdit *dateEdit = new QDateEdit(this);
QTimeEdit *timeEdit = new QTimeEdit(this);
// 錯誤(語法正確)
dateEdit->setDisplayFormat("yyyy/MM/dd HH:mm:ss");
timeEdit->setDisplayFormat("yyyy/MM/dd HH:mm:ss");
// 正確
//dateEdit->setDisplayFormat("yyyy/MM/dd");
//timeEdit->setDisplayFormat("HH:mm:ss");
// 設定日期時間
dateEdit->setDateTime(QDateTime::currentDateTime());
timeEdit->setDateTime(QDateTime::currentDateTime());
顯然,當點選QDateEdit的上下箭頭時,只能改變日期,而改變不了時間。同理,當點選QTimeEdit的上下箭頭時,只能改變時間,而改變不了日期。
所以,即使語法正確,也不建議把QDateEdit和QTimeEdit當做QDateTimeEdit來用。
注意:即使是設定顯示格式,對於QDateEdit來說,只需要設定年月日即可,例如:yyyy/MM/dd;對於QTimeEdit只需要設定時分秒,例如:HH:mm:ss。
莫強求
命裡有時終須有,命裡無時莫強求。
在QDateTimeEdit使用過程中,分享瞭如何顯示日曆。而日曆是對應的是QDate,而非QTime。所以QDateEdit、QDateTimeEdit可以使用,而QTimeEdit並不能使用。
QDateTimeEdit *dateTimeEdit = new QDateTimeEdit(this);
QDateEdit *dateEdit = new QDateEdit(this);
QTimeEdit *timeEdit = new QTimeEdit(this);
dateTimeEdit->setCalendarPopup(true); // 正確
dateEdit->setCalendarPopup(true); // 正確
timeEdit->setCalendarPopup(true); // 錯誤(語法正確)
對於QTimeEdit來說,雖然語法上可以通過,但是其實做了無用功,純屬冗餘程式碼,毫無意義!
寫程式碼時,有些人喜歡各種亂試,可以就Ok,不可以就拉倒。這種心態不可取,更多時候需要做到知其然,並知其所以然!
更多參考
相關文章
- Qt之QTimeEditQT
- 自定義QTimeEditQT
- Qt之QSpinBox和QDoubleSpinBoxQT
- 【轉】qt-vs-addin:Qt4和Qt5之VS外掛如何共存與使用QT
- Qt學習之XMLQTXML
- VTK QT 之 RenderWindowNoUiFileQTUI
- Qt ——被裁之說QT
- Qt入門之概述QT
- Qt QComboBox之setEditable和currentTextChanged及其原始碼分析QT原始碼
- QT筆記之解決QT5.2.0和VS2012中文亂碼 以及在Qt Creator中文報錯QT筆記
- 靜態編譯Qt5.4.1和Qt WebKit編譯QTWebKit
- Qt之訊號與槽QT
- QT之共享記憶體QT記憶體
- VTK QT 之 RenderWindowUISingleInheritanceQTUI
- Qt QML之 JavaScript Host EnvironmentQTJavaScript
- QT之qss教程-QSpinBoxQT
- qt-5.6.0 移植之qt檔案系統的建立QT
- Qt 之 Graphics View Framework 簡介QTViewFramework
- Qt之自繪製餅圖QT
- Qt之qss檔案編寫QT
- Qt 之等待提示框(QMovie)QT
- qt之函式重定義QT函式
- QT之不同主機之間TCP通訊QTTCP
- QT和VC操作快捷鍵QT
- 12_QT跨平臺執行之使用QT控制蜂鳴器QT
- QT佈局之控制元件空隙QT控制元件
- Qt程式設計之悲慘世界QT程式設計
- (轉)Qt之qss檔案編寫QT
- qt之點的繪製示例demoQT
- Qt:獲取日期和時間QT
- qt的安裝和debugQT
- 02_QT訊號和槽QT
- 什麼是qt,QT Creator, QT SDK, QT DesignerQT
- QT筆記之實現陰影視窗QT筆記
- QT中類之間的關係圖QT
- Qt之設定窗體居中顯示QT
- QT之控制元件疊加顯示QT控制元件
- Qt 嵌入式圖形開發大全和QT開發手冊QT