File indexing completed on 2026-09-14 09:20:49
0001
0002
0003
0004
0005 #ifndef QDATETIMEEDIT_H
0006 #define QDATETIMEEDIT_H
0007
0008 #include <QtWidgets/qtwidgetsglobal.h>
0009 #include <QtCore/qtimezone.h>
0010 #include <QtCore/qcalendar.h>
0011 #include <QtCore/qvariant.h>
0012 #include <QtWidgets/qabstractspinbox.h>
0013
0014 QT_REQUIRE_CONFIG(datetimeedit);
0015
0016 QT_BEGIN_NAMESPACE
0017
0018 class QDateTimeEditPrivate;
0019 class QStyleOptionSpinBox;
0020 class QCalendarWidget;
0021
0022 class Q_WIDGETS_EXPORT QDateTimeEdit : public QAbstractSpinBox
0023 {
0024 Q_OBJECT
0025
0026 Q_PROPERTY(QDateTime dateTime READ dateTime WRITE setDateTime NOTIFY dateTimeChanged USER true)
0027 Q_PROPERTY(QDate date READ date WRITE setDate NOTIFY dateChanged)
0028 Q_PROPERTY(QTime time READ time WRITE setTime NOTIFY timeChanged)
0029 Q_PROPERTY(QDateTime maximumDateTime READ maximumDateTime WRITE setMaximumDateTime
0030 RESET clearMaximumDateTime)
0031 Q_PROPERTY(QDateTime minimumDateTime READ minimumDateTime WRITE setMinimumDateTime
0032 RESET clearMinimumDateTime)
0033 Q_PROPERTY(QDate maximumDate READ maximumDate WRITE setMaximumDate RESET clearMaximumDate)
0034 Q_PROPERTY(QDate minimumDate READ minimumDate WRITE setMinimumDate RESET clearMinimumDate)
0035 Q_PROPERTY(QTime maximumTime READ maximumTime WRITE setMaximumTime RESET clearMaximumTime)
0036 Q_PROPERTY(QTime minimumTime READ minimumTime WRITE setMinimumTime RESET clearMinimumTime)
0037 Q_PROPERTY(Section currentSection READ currentSection WRITE setCurrentSection)
0038 Q_PROPERTY(Sections displayedSections READ displayedSections)
0039 Q_PROPERTY(QString displayFormat READ displayFormat WRITE setDisplayFormat)
0040 Q_PROPERTY(bool calendarPopup READ calendarPopup WRITE setCalendarPopup)
0041 Q_PROPERTY(int currentSectionIndex READ currentSectionIndex WRITE setCurrentSectionIndex)
0042 Q_PROPERTY(int sectionCount READ sectionCount)
0043 #if QT_DEPRECATED_SINCE(6, 10)
0044 Q_PROPERTY(Qt::TimeSpec timeSpec READ timeSpec WRITE setTimeSpec)
0045 #endif
0046 Q_PROPERTY(QTimeZone timeZone READ timeZone WRITE setTimeZone)
0047 public:
0048 enum Section {
0049 NoSection = 0x0000,
0050 AmPmSection = 0x0001,
0051 MSecSection = 0x0002,
0052 SecondSection = 0x0004,
0053 MinuteSection = 0x0008,
0054 HourSection = 0x0010,
0055 DaySection = 0x0100,
0056 MonthSection = 0x0200,
0057 YearSection = 0x0400,
0058 TimeSections_Mask = AmPmSection|MSecSection|SecondSection|MinuteSection|HourSection,
0059 DateSections_Mask = DaySection|MonthSection|YearSection
0060 };
0061 Q_ENUM(Section)
0062
0063 Q_DECLARE_FLAGS(Sections, Section)
0064 Q_FLAG(Sections)
0065
0066 explicit QDateTimeEdit(QWidget *parent = nullptr);
0067 explicit QDateTimeEdit(const QDateTime &dt, QWidget *parent = nullptr);
0068 explicit QDateTimeEdit(QDate d, QWidget *parent = nullptr);
0069 explicit QDateTimeEdit(QTime t, QWidget *parent = nullptr);
0070 ~QDateTimeEdit();
0071
0072 QDateTime dateTime() const;
0073 QDate date() const;
0074 QTime time() const;
0075
0076 QCalendar calendar() const;
0077 void setCalendar(QCalendar calendar);
0078
0079 QDateTime minimumDateTime() const;
0080 void clearMinimumDateTime();
0081 void setMinimumDateTime(const QDateTime &dt);
0082
0083 QDateTime maximumDateTime() const;
0084 void clearMaximumDateTime();
0085 void setMaximumDateTime(const QDateTime &dt);
0086
0087 void setDateTimeRange(const QDateTime &min, const QDateTime &max);
0088
0089 QDate minimumDate() const;
0090 void setMinimumDate(QDate min);
0091 void clearMinimumDate();
0092
0093 QDate maximumDate() const;
0094 void setMaximumDate(QDate max);
0095 void clearMaximumDate();
0096
0097 void setDateRange(QDate min, QDate max);
0098
0099 QTime minimumTime() const;
0100 void setMinimumTime(QTime min);
0101 void clearMinimumTime();
0102
0103 QTime maximumTime() const;
0104 void setMaximumTime(QTime max);
0105 void clearMaximumTime();
0106
0107 void setTimeRange(QTime min, QTime max);
0108
0109 Sections displayedSections() const;
0110 Section currentSection() const;
0111 Section sectionAt(int index) const;
0112 void setCurrentSection(Section section);
0113
0114 int currentSectionIndex() const;
0115 void setCurrentSectionIndex(int index);
0116
0117 QCalendarWidget *calendarWidget() const;
0118 void setCalendarWidget(QCalendarWidget *calendarWidget);
0119
0120 int sectionCount() const;
0121
0122 void setSelectedSection(Section section);
0123
0124 QString sectionText(Section section) const;
0125
0126 QString displayFormat() const;
0127 void setDisplayFormat(const QString &format);
0128
0129 bool calendarPopup() const;
0130 void setCalendarPopup(bool enable);
0131
0132 #if QT_DEPRECATED_SINCE(6, 10)
0133 QT_DEPRECATED_VERSION_X_6_10("Use timeZone() instead")
0134 Qt::TimeSpec timeSpec() const;
0135 QT_DEPRECATED_VERSION_X_6_10("Use setTimeZone() instead")
0136 void setTimeSpec(Qt::TimeSpec spec);
0137 #endif
0138 QTimeZone timeZone() const;
0139 void setTimeZone(const QTimeZone &zone);
0140
0141 QSize sizeHint() const override;
0142
0143 void clear() override;
0144 void stepBy(int steps) override;
0145
0146 bool event(QEvent *event) override;
0147 Q_SIGNALS:
0148 void dateTimeChanged(const QDateTime &dateTime);
0149 void timeChanged(QTime time);
0150 void dateChanged(QDate date);
0151
0152 public Q_SLOTS:
0153 void setDateTime(const QDateTime &dateTime);
0154 void setDate(QDate date);
0155 void setTime(QTime time);
0156
0157 protected:
0158 void keyPressEvent(QKeyEvent *event) override;
0159 #if QT_CONFIG(wheelevent)
0160 void wheelEvent(QWheelEvent *event) override;
0161 #endif
0162 void focusInEvent(QFocusEvent *event) override;
0163 bool focusNextPrevChild(bool next) override;
0164 QValidator::State validate(QString &input, int &pos) const override;
0165 void fixup(QString &input) const override;
0166
0167 virtual QDateTime dateTimeFromText(const QString &text) const;
0168 virtual QString textFromDateTime(const QDateTime &dt) const;
0169 StepEnabled stepEnabled() const override;
0170 void mousePressEvent(QMouseEvent *event) override;
0171 void paintEvent(QPaintEvent *event) override;
0172 void initStyleOption(QStyleOptionSpinBox *option) const override;
0173
0174 QDateTimeEdit(const QVariant &val, QMetaType::Type parserType, QWidget *parent = nullptr);
0175 private:
0176 Q_DECLARE_PRIVATE(QDateTimeEdit)
0177 Q_DISABLE_COPY(QDateTimeEdit)
0178
0179 Q_PRIVATE_SLOT(d_func(), void _q_resetButton())
0180 };
0181
0182 class Q_WIDGETS_EXPORT QTimeEdit : public QDateTimeEdit
0183 {
0184 Q_OBJECT
0185 Q_PROPERTY(QTime time READ time WRITE setTime NOTIFY userTimeChanged USER true)
0186 public:
0187 explicit QTimeEdit(QWidget *parent = nullptr);
0188 explicit QTimeEdit(QTime time, QWidget *parent = nullptr);
0189 ~QTimeEdit();
0190
0191 Q_SIGNALS:
0192 void userTimeChanged(QTime time);
0193 };
0194
0195 class Q_WIDGETS_EXPORT QDateEdit : public QDateTimeEdit
0196 {
0197 Q_OBJECT
0198 Q_PROPERTY(QDate date READ date WRITE setDate NOTIFY userDateChanged USER true)
0199 public:
0200 explicit QDateEdit(QWidget *parent = nullptr);
0201 explicit QDateEdit(QDate date, QWidget *parent = nullptr);
0202 ~QDateEdit();
0203
0204 Q_SIGNALS:
0205 void userDateChanged(QDate date);
0206 };
0207
0208 Q_DECLARE_OPERATORS_FOR_FLAGS(QDateTimeEdit::Sections)
0209
0210 QT_END_NAMESPACE
0211
0212 #endif