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