QDateTimeEdit 类提供用于编辑日期和时间的 Widget。 更多...
头: | #include <QDateTimeEdit> |
CMake: |
find_package(Qt6 COMPONENTS Widgets REQUIRED)
target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
qmake: | QT += widgets |
继承: | QAbstractSpinBox |
继承者: | QDateEdit and QTimeEdit |
enum | Section { NoSection, AmPmSection, MSecSection, SecondSection, MinuteSection, …, YearSection } |
flags | 章节 |
|
|
QDateTimeEdit (QTime time , QWidget * parent = nullptr) | |
QDateTimeEdit (QDate date , QWidget * parent = nullptr) | |
QDateTimeEdit (const QDateTime & datetime , QWidget * parent = nullptr) | |
QDateTimeEdit (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 年末的任何日期时间均有效。
可以配置 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 .
常量 | 值 |
---|---|
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 组合。
此特性保持当前日历弹出显示模式。
日历弹出将展示,当点击箭头按钮时。此特性才有效,若存在有效日期显示格式。
访问函数:
bool | calendarPopup () const |
void | setCalendarPopup (bool enable ) |
另请参阅 setDisplayFormat ().
此特性保持自旋框的当前区间。
访问函数:
QDateTimeEdit::Section | currentSection () const |
void | setCurrentSection (QDateTimeEdit::Section section ) |
此特性保持自旋框的当前区间索引。
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 ().
此特性保持 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 ) |
此特性保持 QDateTime that is set in the QDateTimeEdit .
When setting this property, the new QDateTime is converted to the timespec 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 .
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 ().
此特性保持日期时间编辑的最大日期。
改变此特性会更新日期对于 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 (),和 键盘追踪 .
此特性保持日期时间编辑的最大日期时间。
改变此特性会隐式更新 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 (),和 键盘追踪 .
此特性保持日期时间编辑的最大时间。
改变此特性会更新时间对于 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 (),和 键盘追踪 .
此特性保持日期时间编辑的最小日期。
改变此特性会更新日期对于 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 (),和 键盘追踪 .
此特性保持日期时间编辑的最小日期时间。
改变此特性会隐式更新 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 (),和 键盘追踪 .
此特性保持日期时间编辑的最小时间。
改变此特性会更新时间对于 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 |
此特性保持 QTime 是在 Widget 设置的。
默认情况下,此特性包含时间 00:00:00 和 0 毫秒。
访问函数:
QTime | time () const |
void | setTime (QTime time ) |
通知程序信号:
void | timeChanged (QTime time ) |
此特性保持用于日期时间编辑的当前时间规范。
访问函数:
Qt::TimeSpec | timeSpec () const |
void | setTimeSpec (Qt::TimeSpec spec ) |
构造空的日期时间编辑器采用 parent 。值被设为 time .
构造空的日期时间编辑器采用 parent 。值被设为 date .
构造空的日期时间编辑器采用 parent 。值被设为 datetime .
构造空的日期时间编辑器采用 parent .
[signal]
void
QDateTimeEdit::
dateChanged
(
QDate
date
)
此信号被发射,每当日期改变时。新日期被传入 date .
注意: 通知程序信号对于特性 date .
另请参阅 键盘追踪 .
[signal]
void
QDateTimeEdit::
dateTimeChanged
(const
QDateTime
&
datetime
)
此信号被发射,每当日期 (或时间) 改变时。新日期和时间被传入 datetime .
注意: 通知程序信号对于特性 dateTime .
另请参阅 键盘追踪 .
[signal]
void
QDateTimeEdit::
timeChanged
(
QTime
time
)
此信号被发射,每当时间改变时。新时间被传入 time .
注意: 通知程序信号对于特性 time .
另请参阅 键盘追踪 .
[虚拟]
QDateTimeEdit::
~QDateTimeEdit
()
析构函数。
返回用于编辑器的日历 Widget 若 calendarPopup 被设为 true 且 (sections() & DateSections_Mask ) != 0.
此函数创建并返回日历 Widget 若没有设置。
另请参阅 setCalendarWidget ().
[override virtual]
void
QDateTimeEdit::
clear
()
重实现: QAbstractSpinBox::clear ().
返回日期时间编辑的日期。
注意: getter 函数对于特性 date。
另请参阅 setDate ().
[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).
返回区间按 index .
若格式为 yyyy/MM/dd,sectionAt(0) 返回 YearSection ,sectionAt(1) 返回 MonthSection ,和 sectionAt(2) 返回 YearSection ,
返回文本从给定 section .
另请参阅 currentSection ().
设置给定 calendarWidget 作为用于日历弹出的 Widget。编辑器不会自动拥有日历 Widget 的所有权。
注意: calendarPopup 必须被设为 true 在设置日历 Widget 前。
另请参阅 calendarWidget () 和 calendarPopup .
设置用于日期时间编辑的允许日期范围。
此方便函数设置 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 (),和 键盘追踪 .
设置用于日期时间编辑的允许日期时间范围。
此方便函数设置 minimumDateTime and maximumDateTime 特性。
setDateTimeRange(min, max);
类似于:
setMinimumDateTime(min); setMaximumDateTime(max);
若 min or max 无效,此函数什么都不做。若 max 小于 min , min 也用作 max .
若范围更窄,那么它跨越时间间隔结束,例如,跨越月末的周,用户只可以将日期时间编辑成范围的后面部分,若键盘追踪被禁用。
另请参阅 minimumDateTime , maximumDateTime , setDateRange (), setTimeRange (), QDateTime::isValid (),和 键盘追踪 .
选择 section 。若 section 未存在于目前显示部分中,此函数什么都不做。若 section is NoSection ,此函数将取消选择编辑器中的所有文本。否则,此函数将光标和当前区间移动到选中区间。
另请参阅 currentSection ().
设置用于日期时间编辑的允许时间范围。
此方便函数设置 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 ().
返回日期时间编辑的时间。
注意: getter 函数对于特性 time。
另请参阅 setTime ().
[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).