Calendar Widget Example▲
QCalendarWidget displays one calendar month at a time and lets the user select a date. The calendar consists of four components: a navigation bar that lets the user change the month that is displayed, a grid where each cell represents one day in the month, and two headers that display weekday names and week numbers.
The Calendar Widget example displays a QCalendarWidget and lets the user configure its appearance and behavior using QComboBoxes, QCheckBoxes, and QDateEdits. In addition, the user can influence the formatting of individual dates and headers.
The properties of the QCalendarWidget are summarized in the table below.
Property |
Description |
---|---|
selectedDate |
The currently selected date. |
minimumDate |
The earliest date that can be selected. |
maximumDate |
The latest date that can be selected. |
firstDayOfWeek |
The day that is displayed as the first day of the week (usually Sunday or Monday). |
gridVisible |
Whether the grid should be shown. |
selectionMode |
Whether the user can select a date or not. |
horizontalHeaderFormat |
The format of the day names in the horizontal header (e.g., "M", "Mon", or "Monday"). |
verticalHeaderFormat |
The format of the vertical header. |
navigationBarVisible |
Whether the navigation bar at the top of the calendar widget is shown. |
The example consists of one class, Window, which creates and lays out the QCalendarWidget and the other widgets that let the user configure the QCalendarWidget.
Window Class Definition▲
Here is the definition of the Window class:
class
Window : public
QWidget
{
Q_OBJECT
public
:
Window(QWidget *
parent =
nullptr
);
private
slots:
void
localeChanged(int
index);
void
firstDayChanged(int
index);
void
selectionModeChanged(int
index);
void
horizontalHeaderChanged(int
index);
void
verticalHeaderChanged(int
index);
void
selectedDateChanged();
void
minimumDateChanged(const
QDate &
amp;date);
void
maximumDateChanged(const
QDate &
amp;date);
void
weekdayFormatChanged();
void
weekendFormatChanged();
void
reformatHeaders();
void
reformatCalendarPage();
private
:
void
createPreviewGroupBox();
void
createGeneralOptionsGroupBox();
void
createDatesGroupBox();
void
createTextFormatsGroupBox();
QComboBox *
createColorComboBox();
QGroupBox *
previewGroupBox;
QGridLayout *
previewLayout;
QCalendarWidget *
calendar;
QGroupBox *
generalOptionsGroupBox;
QLabel *
localeLabel;
QLabel *
firstDayLabel;
...
QCheckBox *
mayFirstCheckBox;
}
;
As is often the case with classes that represent self-contained windows, most of the API is private. We will review the private members as we stumble upon them in the implementation.
Window Class Implementation▲
Let's now review the class implementation, starting with the constructor:
Window::
Window(QWidget *
parent)
:
QWidget(parent)
{
createPreviewGroupBox();
createGeneralOptionsGroupBox();
createDatesGroupBox();
createTextFormatsGroupBox();
QGridLayout *
layout =
new
QGridLayout;
layout-&
gt;addWidget(previewGroupBox, 0
, 0
);
layout-&
gt;addWidget(generalOptionsGroupBox, 0
, 1
);
layout