QDateTimeEdit 类

The QDateTimeEdit class provides a widget for editing dates and times. 更多...

头文件 #include <QDateTimeEdit>
CMakefind_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmakeQT += widgets
继承自 QAbstractSpinBox
继承类

QDateEditQTimeEdit

公共类型

枚举Section { NoSection, AmPmSection, MSecSection, SecondSection, MinuteSection, …, YearSection }
标志部分

属性

公共函数

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()
QCalendarcalendar() const
boolcalendarPopup() const
QCalendarWidget *calendarWidget() const
voidclearMaximumDate()
voidclearMaximumDateTime()
voidclearMaximumTime()
voidclearMinimumDate()
voidclearMinimumDateTime()
voidclearMinimumTime()
QDateTimeEdit::SectioncurrentSection() const
intcurrentSectionIndex() const
QDatedate() const
QDateTimedateTime() const
QStringdisplayFormat() const
QDateTimeEdit::SectionsdisplayedSections() const
QDatemaximumDate() const
QDateTimemaximumDateTime() const
QTimemaximumTime() const
QDateminimumDate() const
QDateTimeminimumDateTime() const
QTimeminimumTime() const
QDateTimeEdit::SectionsectionAt(int index) const
intsectionCount() const
QStringsectionText(QDateTimeEdit::Section section) const
voidsetCalendar(QCalendar calendar)
voidsetCalendarPopup(bool enable)
voidsetCalendarWidget(QCalendarWidget *calendarWidget)
voidsetCurrentSection(QDateTimeEdit::Section section)
voidsetCurrentSectionIndex(int index)
voidsetDateRange(QDate min, QDate max)
voidsetDateTimeRange(const QDateTime &min, const QDateTime &max)
voidsetDisplayFormat(const QString &format)
voidsetMaximumDate(QDate max)
voidsetMaximumDateTime(const QDateTime &dt)
voidsetMaximumTime(QTime max)
voidsetMinimumDate(QDate min)
voidsetMinimumDateTime(const QDateTime &dt)
voidsetMinimumTime(QTime min)
voidsetSelectedSection(QDateTimeEdit::Section section)
voidsetTimeRange(QTime min, QTime max)
voidsetTimeZone(const QTimeZone &zone)
QTimetime() const
QTimeZonetimeZone() const

重新实现公共函数

virtual voidclear() override
virtual boolevent(QEvent *event) override
virtual QSizesizeHint() const override
virtual voidstepBy(int steps) override

公共槽

voidsetDate(QDate date)
voidsetDateTime(const QDateTime &dateTime)
voidsetTime(QTime time)

信号

voiddateChanged(QDate date)
voiddateTimeChanged(const QDateTime &datetime)
voidtimeChanged(QTime time)

受保护的函数

virtual QDateTimedateTimeFromText(const QString &text) const
virtual QStringtextFromDateTime(const QDateTime &dateTime) const

重新实现受保护函数

virtual voidfixup(QString &input) const override
virtual voidfocusInEvent(QFocusEvent *event) override
virtual boolfocusNextPrevChild(bool next) override
virtual voidinitStyleOption(QStyleOptionSpinBox *option) const override
virtual voidkeyPressEvent(QKeyEvent *event) override
virtual voidmousePressEvent(QMouseEvent *event) override
virtual voidpaintEvent(QPaintEvent *event) override
虚拟 QAbstractSpinBox::StepEnabledstepEnabled() const override
虚拟 QValidator::Statevalidate(QString &text, int &pos) const override
virtual voidwheelEvent(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 的有效值范围由 minimumDateTimemaximumDateTime 属性及其相应的日期和时间分量控制。默认情况下,从公元 100 年开始到 9999 年结束的任何日期和时间都是有效的。

使用弹出式日历小部件

QDateTimeEdit 可以配置为允许使用 QCalendarWidget 来选择日期。这是通过设置 calendarPopup 属性启用的。此外,您可以调用 setCalendarWidget() 函数提供自定义日历小部件作为日历弹出窗口使用。现有的日历小部件可以通过 calendarWidget() 获取。

键盘跟踪

键盘跟踪 启用时(默认值),编辑字段时每个按键都会触发值变化的信号。

当允许的 范围 小于一些时间间隔的结束部分时,键盘跟踪防止用户更改日期或时间以访问间隔的后半部分。例如,对于一个从 29.04.2020 到 02.05.2020 的范围和一个初始日期 30.04.2020,用户既不能改变月份(5 月 30 日超出范围)也不能改变日期(4 月 2 日超出范围)。

当键盘跟踪关闭时,仅在编辑修改内容后焦点离开文本字段时,才会发出更改的信号。这使用户能够通过无效的日期和时间进行编辑,以达到有效的日期和时间。

另请参阅QDateEditQTimeEditQDateQTime

成员类型文档

枚举 QDateTimeEdit::Section
标志 QDateTimeEdit::Sections

常量
QDateTimeEdit::NoSection0x0000
QDateTimeEdit::AmPmSection0x0001
QDateTimeEdit::MSecSection0x0002
QDateTimeEdit::SecondSection0x0004
QDateTimeEdit::MinuteSection0x0008
QDateTimeEdit::HourSection0x0010
QDateTimeEdit::DaySection0x0100
QDateTimeEdit::MonthSection0x0200
QDateTimeEdit::YearSection0x0400

区域类型是 QFlags<Section> 类型定义。它存储了区域值的 OR 组合。

属性文档

calendarPopup : bool

此属性包含当前日历弹出显示模式。

点击箭头按钮将显示日历弹出窗口。只有在存在有效的日期显示格式时,此属性才有效。

访问函数

boolcalendarPopup() const
voidsetCalendarPopup(bool enable)

另请参阅setDisplayFormat

currentSection : Section

此属性包含当前旋转框的区域。

访问函数

QDateTimeEdit::SectioncurrentSection() const
voidsetCurrentSection(QDateTimeEdit::Section section)

currentSectionIndex : int

此属性包含旋转框的当前区域索引。

如果格式为 'yyyy/MM/dd',displayText 是 '2001/05/21',并且 cursorPosition 是 5,那么 currentSectionIndex 返回 1。如果 cursorPosition 是 3,currentSectionIndex 是 0,依此类推。

访问函数

intcurrentSectionIndex() const
voidsetCurrentSectionIndex(int index)

另请参阅setCurrentSectioncurrentSection

date : QDate

此属性包含在控件中设置的 QDate

默认情况下,此属性包含一个引用 2000 年 1 月 1 日的日期。

访问函数

QDatedate() const
voidsetDate(QDate date)

通知信号

voiddateChanged(QDate date)

另请参阅timedateTime

dateTime : QDateTime

此属性包含在 QDateTimeEdit 中设置的 QDateTime

设置此属性时,新的 QDateTime 将转换为 QDateTimeEdit 的时间系统,因此保持不变。

默认情况下,此属性设置为公元 2000 年的开始。它只能设置为有效的 QDateTime 值。如果任何操作导致此属性的值无效,则将其重置为 minimumDateTime 属性的值。

如果 QDateTimeEdit 没有日期字段,设置此属性将设置控件的日期范围为从新值开始并结束在该属性的值的日期。

访问函数

QDateTimedateTime() const
voidsetDateTime(const QDateTime &dateTime)

通知信号

voiddateTimeChanged(const QDateTime &datetime)

也请参见 日期时间最小日期时间最大日期时间,以及 时区

displayFormat : QString

此属性包含用于显示日期时间编辑时间的格式。

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

示例格式字符串(假设日期为1969年7月2日)

格式结果
dd.MM.yyyy02.07.1969
MMM d yyJul 2 69
MMMM d yyJuly 2 69

请注意,如果您指定两位数的年份,它将被解释为日期时间编辑初始化所在世纪的年份。默认的世纪是21世纪(2000-2099)。

如果您指定一个无效的格式,则不会设置格式。

访问函数

QStringdisplayFormat() const
voidsetDisplayFormat(const QString &format)

也请参见 QDateTime::toString() 和 displayedSections

[只读] displayedSections : const Sections

此属性包含日期时间编辑当前显示的字段。

返回此格式的显示节的位集。

访问函数

QDateTimeEdit::SectionsdisplayedSections() const

也请参见 setDisplayFormat() 和 displayFormat

maximumDate : QDate

此属性包含日期时间编辑的最大日期。

更改此属性将更新 maximumDateTime 属性的日期,同时保留 maximumTime 属性。设置此属性时,如果需要,将调整 minimumDate,以确保范围有效。在这种情况下,如果 minimumTime 属性大于 maximumTime 属性,则也会调整该属性。否则,此属性的改变将保留 minimumDateTime 属性。

此属性只能设置为描述一个日期的有效的 QDate 对象,这个日期是当前 maximumTime 属性构成有效 QDateTime 对象的日期。setMaximumDate() 接受的最后日期是公元9999年的末尾。这是此属性的默认值。此默认值可以通过 clearMaximumDateTime() 恢复。

访问函数

QDatemaximumDate() const
voidsetMaximumDate(QDate max)
voidclearMaximumDate()

也请参见 minimumDatemaximumTimemaximumDateTimeQDate::isValid,以及 键盘跟踪

maximumDateTime : QDateTime

此属性包含日期时间编辑的最大日期时间。

修改此属性会隐式更新 maximumDatemaximumTime 属性,分别为此属性的日期和时间部分。在设置此属性时,如果需要,minimumDateTime 会进行调整,以确保范围有效。否则,更改此属性会保留 minimumDateTime 属性。

此属性只能设置为有效的 QDateTime 值。setMaximumDateTime() 接受的最后一个日期时间是公历 9999 年的年末。这是此属性的默认值。可以通过 clearMaximumDateTime() 恢复此默认值。

访问函数

QDateTimemaximumDateTime() const
voidsetMaximumDateTime(const QDateTime &dt)
voidclearMaximumDateTime()

另请参阅minimumDateTimemaximumTimemaximumDate()、setDateTimeRange()、QDateTime::isValid() 和 键盘跟踪

maximumTime : QTime

此属性保留日期时间编辑的可 máximo momento.

更改此属性会更新 maximumDateTime 属性的时间,同时保留 minimumDatemaximumDate 属性。如果这些日期属性一致,设置此属性时,如果需要,则调整 minimumTime 属性,以确保范围有效。否则,更改此属性将保留 minimumDateTime 属性。

此属性可以设置为任何有效的 QTime 值。默认情况下,此属性包含的时间为 23:59:59 和 999 毫秒。可以通过 clearMaximumTime() 恢复此默认值。

访问函数

QTimemaximumTime() const
voidsetMaximumTime(QTime max)
voidclearMaximumTime()

另请参阅 minimumTimemaximumDatemaximumDateTimesetTimeRange()、QTime::isValid() 和 键盘跟踪

minimumDate : QDate

此属性保持日期时间编辑的最小日期。

更改此属性将更新 minimumDateTime 属性的日期,同时保留 minimumTime 属性。设置此属性时,如果需要,maximumDate 会进行调整,以确保范围有效。此时,如果 maximumTime 属性小于 minimumTime 属性,则也会调整 maximumTime 属性。否则,更改此属性将保留 maximumDateTime 属性。

此属性只能设置为描述 minimumTime 属性何时构成有效的 QDateTime 对象的日期的有效 QDate 对象。setMinimumDate() 接受的最早日期是公元 100 年的开始。此属性的默认值是公元 1752 年 9 月 14 日。可以通过 clearMinimumDateTime() 恢复此默认值。

访问函数

QDateminimumDate() const
voidsetMinimumDate(QDate min)
voidclearMinimumDate()

另请参阅 maximumDateminimumTimeminimumDateTimesetDateRange()、QDate::isValid()以及键盘跟踪.

minimumDateTime : QDateTime

此属性保存日期时间编辑器的最小日期时间。

更改此属性将隐式更新minimumDateminimumTime属性到此属性中的日期和时部分别。设置此属性时,如果必要,适时调整maximumDateTime以确保范围有效。否则,更改此属性将保留maximumDateTime属性。

此属性只能设置有效的QDateTime值。setMinimumDateTime()接受的最早日期时间是公元100年的开始。此属性的默认值是公元1752年9月14日的开始。可以通过clearMinimumDateTime()恢复此默认值。

访问函数

QDateTimeminimumDateTime() const
voidsetMinimumDateTime(const QDateTime &dt)
voidclearMinimumDateTime()

另请参阅 maximumDateTimeminimumTimeminimumDatesetDateTimeRange()、QDateTime::isValid()以及键盘跟踪.

minimumTime : QTime

此属性保存日期时间编辑器的最小时间。

更改此属性将更新minimumDateTime属性中的时间,同时保留minimumDatemaximumDate属性。如果那些日期属性相同,则设置此属性时,如果必要,调整maximumTime属性以确保范围有效。否则,更改此属性将保留maximumDateTime属性。

此属性可以设置为任何有效的QTime值。默认情况下,此属性包含00:00:00和0毫秒的时间。可以通过clearMinimumTime()恢复此默认值。

访问函数

QTimeminimumTime() const
voidsetMinimumTime(QTime min)
voidclearMinimumTime()

另请参阅 maximumTimeminimumDateminimumDateTimesetTimeRange()、QTime::isValid()以及键盘跟踪.

[只读] sectionCount : const int

此属性保存显示的段落数。如果格式是'yyyy/yy/yyyy',则sectionCount返回3

访问函数

intsectionCount() const

time : QTime

此属性保存小部件中设置的时间。

默认情况下,此属性包含00:00:00和0毫秒的时间。

访问函数

QTimetime() const
voidsetTime(QTime time)

通知信号

voidtimeChanged(QTime time)

另请参阅 datedateTime.

[since 6.7] timeZone : QTimeZone

此属性保留 datetime 编辑控件使用的当前时区

如果使用的日期时间格式包含时区指示符 - 即 tttttttttt 格式说明符 - 则用户输入将在此时区中重新表达,无论何时解析都将覆盖用户可能指定的任何时区。

此属性自 Qt 6.7 开始引入。

访问函数

QTimeZonetimeZone() const
voidsetTimeZone(const QTimeZone &zone)

另见 QDateTimeEdit::displayFormat.

成员函数文档

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

使用父对象构造一个空的日期时间编辑器。

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

使用父对象构造一个空的日期时间编辑器,并将值设置为 datetime

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

使用父对象构造一个空的日期时间编辑器,并将值设置为 date

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

使用父对象构造一个空的日期时间编辑器,并将值设置为 time

[virtual noexcept] QDateTimeEdit::~QDateTimeEdit()

析构函数。

QCalendar QDateTimeEdit::calendar() const

报告此小部件使用的日历系统。

另见 setCalendar().

QCalendarWidget *QDateTimeEdit::calendarWidget() const

如果 calendarPopup 设置为 true 并且 (sections() & DateSections_Mask) != 0,则返回编辑器的日历小部件。

此函数创建并返回一个日历小部件(如果尚未设置)。

另见 setCalendarWidget().

[override virtual] void QDateTimeEdit::clear()

重新实现: QAbstractSpinBox::clear().

QDate QDateTimeEdit::date() const

返回日期时间编辑的日期。

注意:date 属性的获取器函数。

另见 setDate().

[信号] void QDateTimeEdit::dateChanged(QDate date)

每当日期改变时,都会发出这个信号。新日期通过 date 参数传入。

注意:属性 date 的通知信号。

另请参阅:键盘跟踪

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

每当日期或时间改变时,都会发出这个信号。新日期和时间通过 datetime 参数传入。

注意:属性 dateTime 的通知信号。

另请参阅:键盘跟踪

[虚保护] QDateTime QDateTimeEdit::dateTimeFromText(const QString &text) const

根据给定的 text 返回适当的日期时间。

这个虚函数被日期编辑控件用于将其用户输入的文本书面值解释为值。

另请参阅:textFromDateTime() 和 validate()。

[重载虚函数] bool QDateTimeEdit::event(QEvent *event)

重实现:QAbstractSpinBox::event(QEvent *event)。

[重载虚保护] void QDateTimeEdit::fixup(QString &input) const

重实现:QAbstractSpinBox::fixup(QString &input) const

[重载虚保护] void QDateTimeEdit::focusInEvent(QFocusEvent *event)

重实现:QAbstractSpinBox::focusInEvent(QFocusEvent *event)。

[重载虚保护] bool QDateTimeEdit::focusNextPrevChild(bool next)

重实现:QWidget::focusNextPrevChild(bool next)。

[重载虚保护] void QDateTimeEdit::initStyleOption(QStyleOptionSpinBox *option) const

重实现:QAbstractSpinBox::initStyleOption(QStyleOptionSpinBox *option) const

使用此 QDataTimeEdit 的值初始化 option。当子类需要 QStyleOptionSpinBox,但不希望自填所有信息时,此方法很有用。

另请参阅:QStyleOption::initFrom

[重载虚保护] void QDateTimeEdit::keyPressEvent(QKeyEvent *event)

重实现:QAbstractSpinBox::keyPressEvent(QKeyEvent *event)。

[重载虚保护] void QDateTimeEdit::mousePressEvent(QMouseEvent *event)

重新实现: QAbstractSpinBox::mousePressEvent(QMouseEvent *event).

[覆盖虚保护] void QDateTimeEdit::paintEvent(QPaintEvent *event)

重新实现: QAbstractSpinBox::paintEvent(QPaintEvent *event).

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

返回索引位置的项。

如果格式是 '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)

calendar 设置为该小部件要使用的日历系统。

小部件可以使用任何受支持的日历系统。默认情况下,它使用公历。

另请参阅calendar

void QDateTimeEdit::setCalendarWidget(QCalendarWidget *calendarWidget)

将给定的 calendarWidget 设置为用于日历弹出窗口的小部件。编辑器不会自动获取日历小部件的所有权。

注意:calendarPopup 必须在设置日历小部件之前设置为 true。

另请参阅calendarWidget() 和 calendarPopup

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

设置日期时间编辑器允许的日期范围。

此便捷函数设置 minimumDatemaximumDate 属性。

setDateRange(min, max);

is analogous to

setMinimumDate(min);
setMaximumDate(max);

如果 minmax 无效,则此函数不执行任何操作。此函数保存 minimumTime 属性。如果 max 小于 min,则新的 maximumDateTime 属性应该是新的 minimumDateTime 属性。如果 max 等于 minmaximumTime 属性小于 minimumTime 属性,则将 maximumTime 属性设置为 minimumTime 属性。否则,它将保存 maximumTime 属性。

如果范围小于它所跨越的时间间隔,例如跨越月底的一周,如果禁用了键盘跟踪,则用户只能编辑日期到范围后面的日期。

另请参阅 minimumDatemaximumDatesetDateTimeRange()、QDate::isValid(),以及键盘跟踪

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

设置日期时间编辑器允许的日期时间范围。

此便捷函数设置minimumDateTimemaximumDateTime属性。

setDateTimeRange(min, max);

is analogous to

setMinimumDateTime(min);
setMaximumDateTime(max);

如果minmax无效,此函数不执行任何操作。如果max小于min,则使用min作为max

如果范围比跨其终点的时距更窄,例如跨越月底的一周,用户只能在禁用键盘跟踪的情况下将日期时间编辑到范围的后半部分。

另请参阅 minimumDateTimemaximumDateTimesetDateRangesetTimeRangeQDateTime::isValid,以及键盘跟踪

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

选择section。如果当前显示的段落中不存在section,则此函数不执行任何操作。如果sectionNoSection,则此函数将取消选择编辑器中的所有文本。否则,此函数将移动光标和当前段落到选择的段落。

另请参阅currentSection

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

设置日期时间编辑器允许的时间范围。

此便捷函数设置minimumTimemaximumTime属性。

请注意,这些仅约束日期时间编辑器的值在分别的minimumDatemaximumDate上。当这些日期属性不一致时,在maximumDate之前的日期允许在max之后的时刻,在minimumDate之后的日期允许在min之前的时刻。

setTimeRange(min, max);

is analogous to

setMinimumTime(min);
setMaximumTime(max);

如果minmax无效,此函数不执行任何操作。此函数保留minimumDatemaximumDate属性。如果这些属性相同且max小于min,则使用min作为max

如果范围比跨其终点的时距更窄,例如从十点到一个小时到十点后,如果禁用键盘跟踪,用户只能在范围的后半部分编辑时间。

另请参阅 minimumTimemaximumTimesetDateTimeRangeQTime::isValid,以及键盘跟踪

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

重新实现:未翻译
QAbstractSpinBox::sizeHint() const

[重载虚函数] void QDateTimeEdit::stepBy(int steps)

重新实现:未翻译
QAbstractSpinBox::stepBy(int steps)。

[重载虚保护] QAbstractSpinBox::StepEnabled QDateTimeEdit::stepEnabled() const

重新实现:未翻译
QAbstractSpinBox::stepEnabled () const。

[虚保护] QString QDateTimeEdit::textFromDateTime(const QDateTime &dateTime) const

这个虚函数在日期时间编辑器需要显示 dateTime 时使用。

如果你重载了此函数,可能还需要重载 validate ()。

另请参阅dateTimeFromText () 和 validate ()。

QTime QDateTimeEdit::time() const

返回日期时间编辑的时间。

注意:属性 time 的获取函数。

另请参阅setTime ()。

[信号] void QDateTimeEdit::timeChanged(QTime time)

当时间改变时,此信号会被发出。新时间通过 time 传递。

注意:属性 time 的通知信号。

另请参阅:键盘跟踪

[重载虚保护] QValidator::State QDateTimeEdit::validate(QString &text, int &pos) const

重新实现:未翻译
QAbstractSpinBox::validate(QString &input, int &pos) const。

[重载虚保护] void QDateTimeEdit::wheelEvent(QWheelEvent *event)

重新实现:未翻译
QAbstractSpinBox::wheelEvent(QWheelEvent *event)。

© 2024 Qt 公司。本文件内包含的文档贡献版权属于各自的所有者。所提供的文档根据 GNU 自由文档许可证 version 1.3(由自由软件基金会发布)许可证条款颁发。Qt 及相关标志是芬兰的 Qt 公司以及/或其他国家/地区的注册商标。所有其他商标均为各自所有者的财产。