Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qcalendarwidget.h
Go to the documentation of this file.
1// Copyright (C) 2020 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3// Qt-Security score:significant reason:default
4
5#ifndef QCALENDARWIDGET_H
6#define QCALENDARWIDGET_H
7
8#include <QtWidgets/qtwidgetsglobal.h>
9#include <QtWidgets/qwidget.h>
10#include <QtCore/qdatetime.h>
11
13
14QT_BEGIN_NAMESPACE
15
16class QDate;
17class QTextCharFormat;
19
20class Q_WIDGETS_EXPORT QCalendarWidget : public QWidget
21{
22 Q_OBJECT
23 Q_ENUMS(Qt::DayOfWeek)
24 Q_PROPERTY(QDate selectedDate READ selectedDate WRITE setSelectedDate)
25 Q_PROPERTY(QDate minimumDate READ minimumDate WRITE setMinimumDate RESET clearMinimumDate)
26 Q_PROPERTY(QDate maximumDate READ maximumDate WRITE setMaximumDate RESET clearMaximumDate)
27 Q_PROPERTY(Qt::DayOfWeek firstDayOfWeek READ firstDayOfWeek WRITE setFirstDayOfWeek)
28 Q_PROPERTY(bool gridVisible READ isGridVisible WRITE setGridVisible)
29 Q_PROPERTY(SelectionMode selectionMode READ selectionMode WRITE setSelectionMode)
30 Q_PROPERTY(HorizontalHeaderFormat horizontalHeaderFormat READ horizontalHeaderFormat
31 WRITE setHorizontalHeaderFormat)
32 Q_PROPERTY(VerticalHeaderFormat verticalHeaderFormat READ verticalHeaderFormat
33 WRITE setVerticalHeaderFormat)
34 Q_PROPERTY(bool navigationBarVisible READ isNavigationBarVisible WRITE setNavigationBarVisible)
35 Q_PROPERTY(bool dateEditEnabled READ isDateEditEnabled WRITE setDateEditEnabled)
36 Q_PROPERTY(int dateEditAcceptDelay READ dateEditAcceptDelay WRITE setDateEditAcceptDelay)
37
38public:
39 enum HorizontalHeaderFormat {
40 NoHorizontalHeader,
41 SingleLetterDayNames,
42 ShortDayNames,
43 LongDayNames
44 };
45 Q_ENUM(HorizontalHeaderFormat)
46
47 enum VerticalHeaderFormat {
48 NoVerticalHeader,
49 ISOWeekNumbers
50 };
51 Q_ENUM(VerticalHeaderFormat)
52
53 enum SelectionMode {
54 NoSelection,
55 SingleSelection
56 };
57 Q_ENUM(SelectionMode)
58
59 explicit QCalendarWidget(QWidget *parent = nullptr);
60 ~QCalendarWidget();
61
62 virtual QSize sizeHint() const override;
63 virtual QSize minimumSizeHint() const override;
64
65 QDate selectedDate() const;
66
67 int yearShown() const;
68 int monthShown() const;
69
70 QDate minimumDate() const;
71 void setMinimumDate(QDate date);
72 void clearMinimumDate();
73
74 QDate maximumDate() const;
75 void setMaximumDate(QDate date);
76 void clearMaximumDate();
77
78 Qt::DayOfWeek firstDayOfWeek() const;
79 void setFirstDayOfWeek(Qt::DayOfWeek dayOfWeek);
80
81 bool isNavigationBarVisible() const;
82 bool isGridVisible() const;
83
84 QCalendar calendar() const;
85 void setCalendar(QCalendar calendar);
86
87 SelectionMode selectionMode() const;
88 void setSelectionMode(SelectionMode mode);
89
90 HorizontalHeaderFormat horizontalHeaderFormat() const;
91 void setHorizontalHeaderFormat(HorizontalHeaderFormat format);
92
93 VerticalHeaderFormat verticalHeaderFormat() const;
94 void setVerticalHeaderFormat(VerticalHeaderFormat format);
95
96 QTextCharFormat headerTextFormat() const;
97 void setHeaderTextFormat(const QTextCharFormat &format);
98
99 QTextCharFormat weekdayTextFormat(Qt::DayOfWeek dayOfWeek) const;
100 void setWeekdayTextFormat(Qt::DayOfWeek dayOfWeek, const QTextCharFormat &format);
101
102 QMap<QDate, QTextCharFormat> dateTextFormat() const;
103 QTextCharFormat dateTextFormat(QDate date) const;
104 void setDateTextFormat(QDate date, const QTextCharFormat &format);
105
106 bool isDateEditEnabled() const;
107 void setDateEditEnabled(bool enable);
108
109 int dateEditAcceptDelay() const;
110 void setDateEditAcceptDelay(int delay);
111
112protected:
113 bool event(QEvent *event) override;
114 bool eventFilter(QObject *watched, QEvent *event) override;
115 void mousePressEvent(QMouseEvent *event) override;
116 void resizeEvent(QResizeEvent * event) override;
117 void keyPressEvent(QKeyEvent * event) override;
118
119 virtual void paintCell(QPainter *painter, const QRect &rect, QDate date) const;
120 void updateCell(QDate date);
121 void updateCells();
122
123public Q_SLOTS:
124 void setSelectedDate(QDate date);
125 void setDateRange(QDate min, QDate max);
126 void setCurrentPage(int year, int month);
127 void setGridVisible(bool show);
128 void setNavigationBarVisible(bool visible);
129 void showNextMonth();
130 void showPreviousMonth();
131 void showNextYear();
132 void showPreviousYear();
133 void showSelectedDate();
134 void showToday();
135
136Q_SIGNALS:
137 void selectionChanged();
138 void clicked(QDate date);
139 void activated(QDate date);
140 void currentPageChanged(int year, int month);
141
142private:
143 Q_DECLARE_PRIVATE(QCalendarWidget)
144 Q_DISABLE_COPY(QCalendarWidget)
145
146 Q_PRIVATE_SLOT(d_func(), void _q_slotShowDate(QDate date))
147 Q_PRIVATE_SLOT(d_func(), void _q_slotChangeDate(QDate date))
148 Q_PRIVATE_SLOT(d_func(), void _q_slotChangeDate(QDate date, bool changeMonth))
149 Q_PRIVATE_SLOT(d_func(), void _q_editingFinished())
150 Q_PRIVATE_SLOT(d_func(), void _q_prevMonthClicked())
151 Q_PRIVATE_SLOT(d_func(), void _q_nextMonthClicked())
152 Q_PRIVATE_SLOT(d_func(), void _q_yearEditingFinished())
153 Q_PRIVATE_SLOT(d_func(), void _q_yearClicked())
154 Q_PRIVATE_SLOT(d_func(), void _q_monthChanged(QAction *act))
155
156};
157
158QT_END_NAMESPACE
159
160#endif // QCALENDARWIDGET_H
QCalendarTextNavigator * m_navigator
void setNavigatorEnabled(bool enable)
void paintCell(QPainter *painter, const QRect &rect, QDate date) const
QItemSelectionModel * m_selection
QMap< int, QAction * > monthToAction
void showMonth(int year, int month)
void _q_monthChanged(QAction *)
void _q_slotChangeDate(QDate date, bool changeMonth)
void createNavigationBar(QWidget *widget)
void _q_slotShowDate(QDate date)
QCalendarDelegate * m_delegate
void updateCurrentPage(QDate newDate)
void _q_slotChangeDate(QDate date)
The QCalendarWidget class provides a monthly based calendar widget allowing the user to select a date...
The QCalendar class describes calendar systems.
Definition qcalendar.h:53
Definition qmap.h:189
\inmodule QtCore
constexpr QModelIndex() noexcept
Creates a new empty model index.
The QStylePainter class is a convenience class for drawing QStyle elements inside a widget.
void paintEvent(QPaintEvent *e) override
\reimp
virtual Section handleKey(int key)=0
virtual void setDate(QDate date, QCalendar cal=QCalendar())=0
virtual QDate applyToDate(QDate date, QCalendar cal=QCalendar()) const =0
virtual QString text(QDate date, QCalendar cal, int repeat) const =0
static QString highlightString(const QString &str, int pos)
virtual QString text() const =0
void setLocale(const QLocale &locale)
void setInitialDate(QDate date, QCalendar cal)
void handleKeyEvent(QKeyEvent *keyEvent, QCalendar cal)
void setFormat(const QString &format)
QString currentText(QCalendar cal) const
virtual QDate applyToDate(QDate date, QCalendar cal) const override
virtual Section handleKey(int key) override
virtual void setDate(QDate date, QCalendar cal) override
virtual QString text() const override
virtual QString text(QDate date, QCalendar cal, int repeat) const override
void paintCell(QPainter *painter, const QRect &rect, QDate date) const
QString dayName(Qt::DayOfWeek day) const
void showMonth(int year, int month)
QTextCharFormat formatForCell(int row, int col) const
int columnCount(const QModelIndex &parent) const override
Returns the number of columns for the children of the given parent.
QString monthName(const QLocale &locale, int month)
void setFirstColumnDay(Qt::DayOfWeek dayOfWeek)
int columnForDayOfWeek(Qt::DayOfWeek day) const
Qt::ItemFlags flags(const QModelIndex &index) const override
\reimp
StaticDayOfWeekAssociativeArray< QTextCharFormat > m_dayFormats
int columnForFirstOfMonth(QDate date) const
void cellForDate(QDate date, int *row, int *column) const
QVariant data(const QModelIndex &index, int role) const override
Returns the data stored under the given role for the item referred to by the index.
Qt::DayOfWeek firstColumnDay() const
void setHorizontalHeaderFormat(QCalendarWidget::HorizontalHeaderFormat format)
Qt::DayOfWeek dayOfWeekForColumn(int section) const
void setView(QCalendarView *view)
int rowCount(const QModelIndex &parent) const override
Returns the number of rows under the given parent.
void setRange(QDate min, QDate max)
QMap< QDate, QTextCharFormat > m_dateFormats
QDate dateForCell(int row, int column) const
virtual QDate applyToDate(QDate date, QCalendar cal) const override
virtual Section handleKey(int key) override
virtual QString text(QDate date, QCalendar cal, int repeat) const override
virtual void setDate(QDate date, QCalendar cal) override
virtual QString text() const override
void timerEvent(QTimerEvent *e) override
This event handler can be reimplemented in a subclass to receive timer events for the object.
bool eventFilter(QObject *o, QEvent *e) override
Filters events if this object has been installed as an event filter for the watched object.
virtual void keyboardSearch(const QString &) override
Moves to and selects the item best matching the string search.
void mouseReleaseEvent(QMouseEvent *event) override
void mousePressEvent(QMouseEvent *event) override
bool event(QEvent *event) override
void keyPressEvent(QKeyEvent *event) override
void changeDate(QDate date, bool changeMonth)
void setReadOnly(bool enable)
QDate handleMouseEvent(QMouseEvent *event)
QModelIndex moveCursor(CursorAction cursorAction, Qt::KeyboardModifiers modifiers) override
Returns a QModelIndex object pointing to the next object in the view, based on the given cursorAction...
void clicked(QDate date)
void mouseDoubleClickEvent(QMouseEvent *event) override
void mouseMoveEvent(QMouseEvent *event) override
virtual QDate applyToDate(QDate date, QCalendar cal) const override
virtual QString text(QDate date, QCalendar cal, int repeat) const override
virtual void setDate(QDate date, QCalendar cal) override
virtual Section handleKey(int key) override
virtual QString text() const override
@ RowCount
@ MinimumDayOffset
@ HeaderRow
@ HeaderColumn
@ ColumnCount
QtPrivate::QPrevNextCalButton QPrevNextCalButton
QtPrivate::QCalendarDateSectionValidator QCalendarDateSectionValidator
QtPrivate::QCalendarModel QCalendarModel
QtPrivate::QCalendarDayValidator QCalendarDayValidator
QtPrivate::QCalendarYearValidator QCalendarYearValidator
QtPrivate::QCalendarDelegate QCalendarDelegate
QtPrivate::QCalendarView QCalendarView
static QString formatNumber(int number, int fieldWidth)
QtPrivate::QCalendarTextNavigator QCalendarTextNavigator
Q_DECLARE_TYPEINFO(QtPrivate::SectionToken, Q_PRIMITIVE_TYPE)
QtPrivate::QCalendarMonthValidator QCalendarMonthValidator
QtPrivate::QCalToolButton QCalToolButton
QtPrivate::QCalendarDateValidator QCalendarDateValidator
QT_REQUIRE_CONFIG(calendarwidget)
#define qApp
constexpr SectionToken(QCalendarDateSectionValidator *v, int rep)
QCalendarDateSectionValidator * validator