Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-09-14 09:20:49

0001 // Copyright (C) 2020 The Qt Company Ltd.
0002 // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
0003 // Qt-Security score:significant reason:default
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 { // a sub-type of QDateTimeParser's like-named enum.
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 // QDATETIMEEDIT_H