QDateTimeEdit 類

QDateTimeEdit 類提供用於編輯日期和時間的 Widget。 更多...

頭: #include <QDateTimeEdit>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
繼承: QAbstractSpinBox
繼承者: QDateEdit and QTimeEdit

公共類型

enum Section { NoSection, AmPmSection, MSecSection, SecondSection, MinuteSection, …, YearSection }
flags Sections

特性

公共函數

QDateTimeEdit (QWidget * parent = nullptr)
QDateTimeEdit (const QDateTime & datetime , QWidget * parent = nullptr)
QDateTimeEdit (QDate date , QWidget * parent = nullptr)
QDateTimeEdit (QTime time , QWidget * parent = nullptr)
virtual ~QDateTimeEdit ()
bool calendarPopup () const
QCalendarWidget * calendarWidget () const
void clearMaximumDate ()
void clearMaximumDateTime ()
void clearMaximumTime ()
void clearMinimumDate ()
void clearMinimumDateTime ()
void clearMinimumTime ()
QDateTimeEdit::Section currentSection () const
int currentSectionIndex () const
QDate date () const
QDateTime dateTime () const
QString displayFormat () const
QDateTimeEdit::Sections displayedSections () const
QDate maximumDate () const
QDateTime maximumDateTime () const
QTime maximumTime () const
QDate minimumDate () const
QDateTime minimumDateTime () const
QTime minimumTime () const
QDateTimeEdit::Section sectionAt (int index ) const
int sectionCount () const
QString sectionText (QDateTimeEdit::Section section ) const
void setCalendarPopup (bool enable )
void setCalendarWidget (QCalendarWidget * calendarWidget )
void setCurrentSection (QDateTimeEdit::Section section )
void setCurrentSectionIndex (int index )
void setDateRange (QDate min , QDate max )
void setDateTimeRange (const QDateTime & min , const QDateTime & max )
void setDisplayFormat (const QString & format )
void setMaximumDate (QDate max )
void setMaximumDateTime (const QDateTime & dt )
void setMaximumTime (QTime max )
void setMinimumDate (QDate min )
void setMinimumDateTime (const QDateTime & dt )
void setMinimumTime (QTime min )
void setSelectedSection (QDateTimeEdit::Section section )
void setTimeRange (QTime min , QTime max )
void setTimeSpec (Qt::TimeSpec spec )
QTime time () const
Qt::TimeSpec timeSpec () const

重實現公共函數

virtual void clear () override
virtual bool event (QEvent * event ) override
virtual QSize sizeHint () const override
virtual void stepBy (int steps ) override

公共槽

void setDate (QDate date )
void setDateTime (const QDateTime & dateTime )
void setTime (QTime time )

信號

void dateChanged (QDate date )
void dateTimeChanged (const QDateTime & datetime )
void timeChanged (QTime time )

保護函數

virtual QDateTime dateTimeFromText (const QString & text ) const
virtual QString textFromDateTime (const QDateTime & dateTime ) const

重實現保護函數

virtual void fixup (QString & input ) const override
virtual void focusInEvent (QFocusEvent * event ) override
virtual bool focusNextPrevChild (bool next ) override
virtual void initStyleOption (QStyleOptionSpinBox * option ) const override
virtual void keyPressEvent (QKeyEvent * event ) override
virtual void mousePressEvent (QMouseEvent * event ) override
virtual void paintEvent (QPaintEvent * event ) override
virtual QAbstractSpinBox::StepEnabled stepEnabled () const override
virtual QValidator::State validate (QString & text , int & pos ) const override
virtual void wheelEvent (QWheelEvent * event ) override

詳細描述

QDateTimeEdit 允許用戶通過使用鍵盤 (或箭頭鍵) 遞增/遞減日期、時間以編輯日期。箭頭鍵可以用於從 QDateTimeEdit 框一區域移至另一區域。日期和時間按設置格式齣現;見 setDisplayFormat ().

QDateTimeEdit *dateEdit = new QDateTimeEdit(QDate::currentDate());
dateEdit->setMinimumDate(QDate::currentDate().addDays(-365));
dateEdit->setMaximumDate(QDate::currentDate().addDays(365));
dateEdit->setDisplayFormat("yyyy.MM.dd");
					

這裏,采用今天的日期初始化,創建新的 QDateTimeEdit 對象,並將有效日期範圍限定到今天 ±365 天。有設置月、日、年次序。

用於 QDateTimeEdit 的有效值範圍的控製是通過特性 minimumDateTime , maximumDateTime ,及它們各自的日期和時間分量。默認情況下,從公元 100 年起到公元 9999 年末的任何日期時間均有效。

使用彈齣日曆 Widget

可以配置 QDateTimeEdit 以允許 QCalendarWidget 用於選擇日期。這的啓用是通過設置 calendarPopup 特性。此外,可以提供自定義日曆 Widget 為用作日曆彈齣通過調用 setCalendarWidget () 函數。可以檢索現有日曆 Widget 采用 calendarWidget ().

鍵盤追蹤

當 鍵盤追蹤 被啓用 (默認),編輯字段時的每次擊鍵都會觸發用於值更改的信號。

當允許 range 比它橫跨的某個時間間隔結束更窄,鍵盤追蹤會阻止用戶編輯日期 (或時間) 以訪問間隔的後麵部分。例如,對於範圍從 29.04.2020 到 02.05.2020,且初始日期為 30.04.2020,用戶既無法改變月份 (5 月 30 日在範圍外),也無法改變天數 (4 月 2 日在範圍外)。

當鍵盤追蹤被禁用,改變纔發齣信號,當聚焦離開文本字段且編輯有修改內容後。這允許用戶憑藉無效日期時間的編輯,以到達有效日期時間。

另請參閱 QDateEdit , QTimeEdit , QDate ,和 QTime .

成員類型文檔編製

enum QDateTimeEdit:: Section
flags QDateTimeEdit:: Sections

常量 值
QDateTimeEdit::NoSection 0x0000
QDateTimeEdit::AmPmSection 0x0001
QDateTimeEdit::MSecSection 0x0002
QDateTimeEdit::SecondSection 0x0004
QDateTimeEdit::MinuteSection 0x0008
QDateTimeEdit::HourSection 0x0010
QDateTimeEdit::DaySection 0x0100
QDateTimeEdit::MonthSection 0x0200
QDateTimeEdit::YearSection 0x0400

Sections 類型是 typedef 對於 QFlags <Section>。它存儲 Section 值的 OR (或) 組閤。

特性文檔編製

calendarPopup : bool

此特性保持當前日曆彈齣顯示模式。

日曆彈齣將展示,當點擊箭頭按鈕時。此特性纔有效,若存在有效日期顯示格式。

訪問函數:

bool calendarPopup () const
void setCalendarPopup (bool enable )

另請參閱 setDisplayFormat ().

currentSection : Section

此特性保持自鏇框的當前區間。

訪問函數:

QDateTimeEdit::Section currentSection () const
void setCurrentSection (QDateTimeEdit::Section section )

currentSectionIndex : int

此特性保持自鏇框的當前區間索引。

If the format is 'yyyy/MM/dd', the displayText is '2001/05/21', and the cursorPosition is 5, currentSectionIndex returns 1. If the cursorPosition is 3, currentSectionIndex is 0, and so on.

訪問函數:

int currentSectionIndex () const
void setCurrentSectionIndex (int index )

另請參閱 setCurrentSection () 和 currentSection ().

date : QDate

此特性保持 QDate 的設置在 Widget。

默認情況下,此特性包含指嚮 2000 年 1 月 1 日的日期。

訪問函數:

QDate date () const
void setDate (QDate date )

通知程序信號:

void dateChanged (QDate date )

另請參閱 time and dateTime .

dateTime : QDateTime

此特性保持 QDateTime 的設置在 QDateTimeEdit .

When setting this property, the new QDateTime is converted to the time system of the QDateTimeEdit , which thus remains unchanged.

By default, this property is set to the start of 2000 CE. It can only be set to a valid QDateTime value. If any operation causes this property to have an invalid date-time as value, it is reset to the value of the minimumDateTime 特性。

若 QDateTimeEdit has no date fields, setting this property sets the widget's date-range to start and end on the date of the new value of this property.

訪問函數:

QDateTime dateTime () const
void setDateTime (const QDateTime & dateTime )

通知程序信號:

void dateTimeChanged (const QDateTime & datetime )

另請參閱 date , time , minimumDateTime ,和 maximumDateTime .

displayFormat : QString

This property holds the format used to display the time/date of the date time edit.

此格式的描述在 QDateTime::toString () 和 QDateTime::fromString ()

Example format strings (assuming that the date is 2nd of July 1969):

格式 結果
dd.MM.yyyy 02.07.1969
MMM d yy Jul 2 69
MMMM d yy July 2 69

Note that if you specify a two digit year, it will be interpreted to be in the century in which the date time edit was initialized. The default century is the 21st (2000-2099).

若指定格式無效,格式將不設置。

訪問函數:

QString displayFormat () const
void setDisplayFormat (const QString & format )

另請參閱 QDateTime::toString () 和 displayedSections ().

[read-only] displayedSections : const Sections

此特性保持日期時間編輯的目前顯示字段。

返迴此格式顯示區間的位集。

訪問函數:

QDateTimeEdit::Sections displayedSections () const

另請參閱 setDisplayFormat () 和 displayFormat ().

maximumDate : QDate

此特性保持日期時間編輯的最大日期。

改變此特性會更新日期對於 maximumDateTime 特性而保留 maximumTime 特性。當設置此特性時, minimumDate 被調節,若有必要,確保範圍仍然有效。當這發生時, minimumTime 特性也會被調節,若它大於 maximumTime 特性。否則,改變此特性會保留 minimumDateTime 特性。

隻可以將此特性設為有效 QDate 日期描述對象,當當前 maximumTime 特性會創建有效 QDateTime 對象。setMaximumDate() 接受的最晚日期是公元 9999 年末。這是此特性的默認值。可以恢復此默認值采用 clearMaximumDateTime ().

訪問函數:

QDate maximumDate () const
void setMaximumDate (QDate max )
void clearMaximumDate ()

另請參閱 minimumDate , maximumTime , maximumDateTime , setDateRange (), QDate::isValid (),和 鍵盤追蹤 .

maximumDateTime : QDateTime

此特性保持日期時間編輯的最大日期時間。

改變此特性會隱式更新 maximumDate and maximumTime 特性分彆到此特性的日期和時間部分。當設置此特性時, minimumDateTime 被調節,若有必要,確保範圍仍然有效。否則,改變此特性會保留 minimumDateTime 特性。

隻可以將此特性設為有效 QDateTime 值。setMaximumDateTime() 接受的最晚日期時間是公元 9999 年末。這是此特性的默認值。可以恢復此默認值采用 clearMaximumDateTime()。

訪問函數:

QDateTime maximumDateTime () const
void setMaximumDateTime (const QDateTime & dt )
void clearMaximumDateTime ()

另請參閱 minimumDateTime , maximumTime , maximumDate (), setDateTimeRange (), QDateTime::isValid (),和 鍵盤追蹤 .

maximumTime : QTime

此特性保持日期時間編輯的最大時間。

改變此特性會更新時間對於 maximumDateTime 特性而保留 minimumDate and maximumDate 特性。若這些日期特性重閤,當設置此特性時, minimumTime 特性被調節,若有必要,確保範圍仍然有效。否則,改變此特性會保留 minimumDateTime 特性。

可以將此特性設為任何有效 QTime 值。默認情況下,此特性包含 23:59:59 和 999 毫秒時間。可以恢復此默認值采用 clearMaximumTime()。

訪問函數:

QTime maximumTime () const
void setMaximumTime (QTime max )
void clearMaximumTime ()

另請參閱 minimumTime , maximumDate , maximumDateTime , setTimeRange (), QTime::isValid (),和 鍵盤追蹤 .

minimumDate : QDate

此特性保持日期時間編輯的最小日期。

改變此特性會更新日期對於 minimumDateTime 特性而保留 minimumTime 特性。當設置此特性時, maximumDate 被調節,若有必要,確保範圍仍然有效。當這發生時, maximumTime 特性也會被調節,若它小於 minimumTime 特性。否則,改變此特性會保留 maximumDateTime 特性。

隻可以將此特性設為有效 QDate 日期描述對象,當當前 minimumTime 特性會創建有效 QDateTime 對象。setMinimumDate() 接受的最早日期是公元 100 年起。此特性的默認值為公元 1752 年 9 月 14 日。可以恢復此默認值采用 clearMinimumDateTime ().

訪問函數:

QDate minimumDate () const
void setMinimumDate (QDate min )
void clearMinimumDate ()

另請參閱 maximumDate , minimumTime , minimumDateTime , setDateRange (), QDate::isValid (),和 鍵盤追蹤 .

minimumDateTime : QDateTime

此特性保持日期時間編輯的最小日期時間。

改變此特性會隱式更新 minimumDate and minimumTime 特性分彆到此特性的日期和時間部分。當設置此特性時, maximumDateTime 被調節,若有必要,確保範圍仍然有效。否則,改變此特性會保留 maximumDateTime 特性。

隻可以將此特性設為有效 QDateTime 值。setMinimumDateTime() 接受的最早日期時間是從公元 100 年起。特性默認從公元 1752 年 9 月 14 日起。采用 clearMinimumDateTime() 可以還原此默認。

訪問函數:

QDateTime minimumDateTime () const
void setMinimumDateTime (const QDateTime & dt )
void clearMinimumDateTime ()

另請參閱 maximumDateTime , minimumTime , minimumDate , setDateTimeRange (), QDateTime::isValid (),和 鍵盤追蹤 .

minimumTime : QTime

此特性保持日期時間編輯的最小時間。

改變此特性會更新時間對於 minimumDateTime 特性而保留 minimumDate and maximumDate 特性。若這些日期特性重閤,當設置此特性時, maximumTime 特性被調節,若有必要,確保範圍仍然有效。否則,改變此特性會保留 maximumDateTime 特性。

可以將此特性設為任何有效 QTime 值。默認情況下,此特性包含 00:00:00 和 0 毫秒時間。可以恢復此默認值采用 clearMinimumTime()。

訪問函數:

QTime minimumTime () const
void setMinimumTime (QTime min )
void clearMinimumTime ()

另請參閱 maximumTime , minimumDate , minimumDateTime , setTimeRange (), QTime::isValid (),和 鍵盤追蹤 .

[read-only] sectionCount : const int

此特性保持顯示的區間數。若格式為 yyyy/yy/yyyy,sectionCount 返迴 3

訪問函數:

int sectionCount () const

time : QTime

此特性保持 QTime 的設置在 Widget。

默認情況下,此特性包含時間 00:00:00 和 0 毫秒。

訪問函數:

QTime time () const
void setTime (QTime time )

通知程序信號:

void timeChanged (QTime time )

另請參閱 date and dateTime .

timeSpec : Qt::TimeSpec

此特性保持用於日期時間編輯的當前時間規範。

訪問函數:

Qt::TimeSpec timeSpec () const
void setTimeSpec (Qt::TimeSpec spec )

成員函數文檔編製

[explicit] QDateTimeEdit:: QDateTimeEdit ( QWidget * parent = nullptr)

構造空的日期時間編輯器采用 parent .

[explicit] QDateTimeEdit:: QDateTimeEdit (const QDateTime & datetime , QWidget * parent = nullptr)

構造空的日期時間編輯器采用 parent 。值被設為 datetime .

[explicit] QDateTimeEdit:: QDateTimeEdit ( QDate date , QWidget * parent = nullptr)

構造空的日期時間編輯器采用 parent 。值被設為 date .

[explicit] QDateTimeEdit:: QDateTimeEdit ( QTime time , QWidget * parent = nullptr)

構造空的日期時間編輯器采用 parent 。值被設為 time .

[虛擬] QDateTimeEdit:: ~QDateTimeEdit ()

析構函數。

QCalendarWidget *QDateTimeEdit:: calendarWidget () const

返迴用於編輯器的日曆 Widget 若 calendarPopup 被設為 true 且 (sections() & DateSections_Mask ) != 0.

此函數創建並返迴日曆 Widget 若沒有設置。

另請參閱 setCalendarWidget ().

[override virtual] void QDateTimeEdit:: clear ()

重實現: QAbstractSpinBox::clear ().

QDate QDateTimeEdit:: date () const

返迴日期時間編輯的日期。

注意: getter 函數對於特性 date。

另請參閱 setDate ().

[signal] void QDateTimeEdit:: dateChanged ( QDate date )

此信號被發射,每當日期改變時。新日期被傳入 date .

注意: 通知程序信號對於特性 date .

另請參閱 鍵盤追蹤 .

[signal] void QDateTimeEdit:: dateTimeChanged (const QDateTime & datetime )

此信號被發射,每當日期 (或時間) 改變時。新日期和時間被傳入 datetime .

注意: 通知程序信號對於特性 dateTime .

另請參閱 鍵盤追蹤 .

[virtual protected] QDateTime QDateTimeEdit:: dateTimeFromText (const QString & text ) const

返迴適當日期時間為給定 text .

此虛函數可以用於日期時間編輯,每當它需要將用戶鍵入文本解釋為值時。

另請參閱 textFromDateTime () 和 validate ().

[override virtual] bool QDateTimeEdit:: event ( QEvent * event )

重實現: QAbstractSpinBox::event (QEvent *event).

[override virtual protected] void QDateTimeEdit:: fixup ( QString & input ) const

重實現: QAbstractSpinBox::fixup(QString &input) const .

[override virtual protected] void QDateTimeEdit:: focusInEvent ( QFocusEvent * event )

重實現: QAbstractSpinBox::focusInEvent (QFocusEvent *event).

[override virtual protected] bool QDateTimeEdit:: focusNextPrevChild ( bool next )

重實現: QWidget::focusNextPrevChild (bool next).

[override virtual protected] void QDateTimeEdit:: initStyleOption ( QStyleOptionSpinBox * option ) const

重實現: QAbstractSpinBox::initStyleOption(QStyleOptionSpinBox *option) const .

初始化 option 采用來自此 QDataTimeEdit 的值。此方法對於子類很有用,當它們需要 QStyleOptionSpinBox ,但不希望自己填充所有信息。

另請參閱 QStyleOption::initFrom ().

[override virtual protected] void QDateTimeEdit:: keyPressEvent ( QKeyEvent * event )

重實現: QAbstractSpinBox::keyPressEvent (QKeyEvent *event).

[override virtual protected] void QDateTimeEdit:: mousePressEvent ( QMouseEvent * event )

重實現: QAbstractSpinBox::mousePressEvent (QMouseEvent *event).

[override virtual protected] void QDateTimeEdit:: paintEvent ( QPaintEvent * event )

重實現: QAbstractSpinBox::paintEvent (QPaintEvent *event).

QDateTimeEdit::Section QDateTimeEdit:: sectionAt ( int index ) const

返迴區間按 index .

若格式為 yyyy/MM/dd,sectionAt(0) 返迴 YearSection ,sectionAt(1) 返迴 MonthSection ,和 sectionAt(2) 返迴 YearSection ,

QString QDateTimeEdit:: sectionText ( QDateTimeEdit::Section section ) const

返迴文本從給定 section .

另請參閱 currentSection ().

void QDateTimeEdit:: setCalendarWidget ( QCalendarWidget * calendarWidget )

設置給定 calendarWidget 作為用於日曆彈齣的 Widget。編輯器不會自動擁有日曆 Widget 的所有權。

注意: calendarPopup 必須被設為 true 在設置日曆 Widget 前。

另請參閱 calendarWidget () 和 calendarPopup .

void QDateTimeEdit:: setDateRange ( QDate min , QDate max )

設置用於日期時間編輯的允許日期範圍。

此方便函數設置 minimumDate and maximumDate 特性。

setDateRange(min, max);
					

類似於:

setMinimumDate(min);
setMaximumDate(max);
					

若 min or max 無效,此函數什麼都不做。此函數保留 minimumTime 特性。若 max 小於 min ,新 maximumDateTime 特性將是新 minimumDateTime 特性。若 max 等於 min 和 maximumTime 特性小於 minimumTime 特性, maximumTime 特性被設為 minimumTime 特性。否則,這保留 maximumTime 特性。

若範圍更窄,那麼它跨越時間間隔結束,例如,跨越月末的周,用戶隻可以將日期編輯成範圍的後麵部分,若鍵盤追蹤被禁用。

另請參閱 minimumDate , maximumDate , setDateTimeRange (), QDate::isValid (),和 鍵盤追蹤 .

void QDateTimeEdit:: setDateTimeRange (const QDateTime & min , const QDateTime & max )

設置用於日期時間編輯的允許日期時間範圍。

此方便函數設置 minimumDateTime and maximumDateTime 特性。

setDateTimeRange(min, max);
					

類似於:

setMinimumDateTime(min);
setMaximumDateTime(max);
					

若 min or max 無效,此函數什麼都不做。若 max 小於 min , min 也用作 max .

若範圍更窄,那麼它跨越時間間隔結束,例如,跨越月末的周,用戶隻可以將日期時間編輯成範圍的後麵部分,若鍵盤追蹤被禁用。

另請參閱 minimumDateTime , maximumDateTime , setDateRange (), setTimeRange (), QDateTime::isValid (),和 鍵盤追蹤 .

void QDateTimeEdit:: setSelectedSection ( QDateTimeEdit::Section section )

選擇 section 。若 section 未存在於目前顯示部分中,此函數什麼都不做。若 section is NoSection ,此函數將取消選擇編輯器中的所有文本。否則,此函數將光標和當前區間移動到選中區間。

另請參閱 currentSection ().

void QDateTimeEdit:: setTimeRange ( QTime min , QTime max )

設置用於日期時間編輯的允許時間範圍。

此方便函數設置 minimumTime and maximumTime 特性。

注意,這些分彆僅約束日期時間編輯的值, minimumDate and maximumDate 。當這些日期特性不重閤時,時間後於 max 是允許的當日期先於 maximumDate 且時間先於 min 是允許的當日期後於 minimumDate .

setTimeRange(min, max);
					

類似於:

setMinimumTime(min);
setMaximumTime(max);
					

若 min or max 無效,此函數什麼都不做。此函數保留 minimumDate and maximumDate 特性。若這些特性重閤且 max 小於 min , min 用作 max .

若範圍更窄,那麼它跨越時間間隔結束,例如,從 10 點到 1 點的 10 小時時間間隔,用戶隻可以按該範圍的後麵部分將時間編輯成 1,若鍵盤追蹤被禁用。

另請參閱 minimumTime , maximumTime , setDateTimeRange (), QTime::isValid (),和 鍵盤追蹤 .

[override virtual] QSize QDateTimeEdit:: sizeHint () const

重實現: QAbstractSpinBox::sizeHint() const .

[override virtual] void QDateTimeEdit:: stepBy ( int steps )

重實現: QAbstractSpinBox::stepBy (int steps).

[override virtual protected] QAbstractSpinBox::StepEnabled QDateTimeEdit:: stepEnabled () const

重實現: QAbstractSpinBox::stepEnabled() const .

[virtual protected] QString QDateTimeEdit:: textFromDateTime (const QDateTime & dateTime ) const

此虛函數用於日期時間編輯,每當它需要顯示 dateTime .

若重實現這,還可能需要重實現 validate ().

另請參閱 dateTimeFromText () 和 validate ().

QTime QDateTimeEdit:: time () const

返迴日期時間編輯的時間。

注意: getter 函數對於特性 time。

另請參閱 setTime ().

[signal] void QDateTimeEdit:: timeChanged ( QTime time )

此信號發射,每當時間改變時。新時間被傳入 time .

注意: 通知程序信號對於特性 time .

另請參閱 鍵盤追蹤 .

[override virtual protected] QValidator::State QDateTimeEdit:: validate ( QString & text , int & pos ) const

重實現: QAbstractSpinBox::validate(QString &input, int &pos) const .

[override virtual protected] void QDateTimeEdit:: wheelEvent ( QWheelEvent * event )

重實現: QAbstractSpinBox::wheelEvent (QWheelEvent *event).