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 章节

特性

公共函数

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 ()
QCalendar calendar () const
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 setCalendar (QCalendar calendar )
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 setTimeZone (const QTimeZone & zone )
QTime time () const
QTimeZone timeZone () 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:: 章节

常量
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 设置的。

By default, this property contains a date that refers to January 1, 2000.

访问函数:

QDate date () const
void setDate (QDate date )

通知程序信号:

void dateChanged (QDate date )

另请参阅 time and dateTime .

dateTime : QDateTime

此特性保持 QDateTime that is set in the 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 ,和 timeZone .

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).

If you specify an invalid format the format will not be set.

访问函数:

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

另请参阅 QDateTime::toString () 和 displayedSections ().

[read-only] displayedSections : const 章节

此特性保持日期时间编辑的目前显示字段。

返回此格式显示区间的位集。

访问函数:

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 value. The earliest date-time that setMinimumDateTime() accepts is the start of 100 CE. The property's default is the start of September 14, 1752 CE. This default can be restored with 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 .

[since 6.7] timeZone : QTimeZone

This property holds the current timezone used by the datetime editing widget

If the datetime format in use includes a timezone indicator - that is, a t , tt , ttt or tttt format specifier - the user's input is re-expressed in this timezone whenever it is parsed, overriding any timezone the user may have specified.

This property was introduced in Qt 6.7.

访问函数:

QTimeZone timeZone () const
void setTimeZone (const QTimeZone & zone )

另请参阅 QDateTimeEdit::displayFormat .

成员函数文档编制

[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 .

[virtual noexcept] QDateTimeEdit:: ~QDateTimeEdit ()

析构函数。

QCalendar QDateTimeEdit:: calendar () const

Report the calendar system in use by this widget.

另请参阅 setCalendar ().

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:: setCalendar ( QCalendar calendar )

Set calendar as the calendar system to be used by this widget.

The widget can use any supported calendar system. By default, it uses the Gregorian calendar.

另请参阅 calendar ().

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).