Класс QCalendarWidget
Класс QCalendarWidget предоставляет виджет календаря на основе месяца, позволяющий пользователю выбирать дату. Подробнее...
| Заголовок: | #include <QCalendarWidget> |
| CMake: | find_package(Qt6 COMPONENTS Widgets REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| Наследует: | QWidget |
Типы
| Перечисление | HorizontalHeaderFormat { SingleLetterDayNames, ShortDayNames, LongDayNames, NoHorizontalHeader } |
| Перечисление | SelectionMode { NoSelection, SingleSelection } |
| Перечисление | VerticalHeaderFormat { ISOWeekNumbers, NoVerticalHeader } |
Свойства
|
|
Открытые функции
| QCalendarWidget(QWidget *parent = nullptr) | |
| virtual | ~QCalendarWidget() |
| int | dateEditAcceptDelay() const |
| QMap<QDate, QTextCharFormat> | dateTextFormat() const |
| QTextCharFormat | dateTextFormat(QDate date) const |
| Qt::DayOfWeek | firstDayOfWeek() const |
| QTextCharFormat | headerTextFormat() const |
| QCalendarWidget::HorizontalHeaderFormat | horizontalHeaderFormat() const |
| bool | isDateEditEnabled() const |
| bool | isGridVisible() const |
| bool | isNavigationBarVisible() const |
| QDate | maximumDate() const |
| QDate | minimumDate() const |
| int | monthShown() const |
| QDate | selectedDate() const |
| QCalendarWidget::SelectionMode | selectionMode() const |
| void | setDateEditAcceptDelay(int delay) |
| void | setDateEditEnabled(bool enable) |
| void | setDateTextFormat(QDate date, const QTextCharFormat &format) |
| void | setFirstDayOfWeek(Qt::DayOfWeek dayOfWeek) |
| void | setHeaderTextFormat(const QTextCharFormat &format) |
| void | setHorizontalHeaderFormat(QCalendarWidget::HorizontalHeaderFormat format) |
| void | setMaximumDate(QDate date) |
| void | setMinimumDate(QDate date) |
| void | setSelectionMode(QCalendarWidget::SelectionMode mode) |
| void | setVerticalHeaderFormat(QCalendarWidget::VerticalHeaderFormat format) |
| void | setWeekdayTextFormat(Qt::DayOfWeek dayOfWeek, const QTextCharFormat &format) |
| QCalendarWidget::VerticalHeaderFormat | verticalHeaderFormat() const |
| QTextCharFormat | weekdayTextFormat(Qt::DayOfWeek dayOfWeek) const |
| int | yearShown() const |
Переопределенные открытые функции
| virtual QSize | minimumSizeHint() const override |
| virtual QSize | sizeHint() const override |
Открытые слоты
| void | установитьТекущуюСтраницу(int year, int month) |
| void | установитьДиапазонДат(QDate min, QDate max) |
| void | установитьВидимостьСетки(bool show) |
| void | установитьВидимостьПанелиНавигации(bool visible) |
| void | установитьВыбраннуюДату(QDate date) |
| void | показатьСледующийМесяц() |
| void | показатьСледующийГод() |
| void | показатьПредыдущийМесяц() |
| void | показатьПредыдущийГод() |
| void | отобразитьВыбраннуюДату() |
| void | показатьСегодня() |
Сигналы
| void | активировано(QDate date) |
| void | нажато(QDate date) |
| void | измененаТекущаяСтраница(int year, int month) |
| void | измененоВыделение() |
Защищенные функции
| virtual void | рисоватьЯчейку(QPainter *painter, const QRect &rect, QDate date) const |
| void | обновитьЯчейку(QDate date) |
| void | обновитьЯчейки() |
Переопределенные защищенные функции
| virtual bool | обработатьСобытие(QEvent *event) override |
| virtual bool | фильтрСобытий(QObject *watched, QEvent *event) override |
| virtual void | обработатьНажатиеКлавиши(QKeyEvent *event) override |
| virtual void | обработатьНажатиеМыши(QMouseEvent *event) override |
| virtual void | обработатьИзменениеРазмеры(QResizeEvent *event) override |
Подробное описание
Виджет инициализируется текущим месяцем и годом, но QCalendarWidget предоставляет несколько публичных слотов для изменения отображаемого года и месяца.
По умолчанию выбрана сегодняшняя дата, и пользователь может выбрать дату, используя как мышь, так и клавиатуру. Текущую выбранную дату можно получить с помощью функции selectedDate(). Можно ограничить выбор пользователя заданным диапазоном дат, установив свойства minimumDate и maximumDate. Или оба свойства можно установить сразу с помощью удобного слота setDateRange(). Установите свойство selectionMode в NoSelection, чтобы запретить пользователю выбирать что-либо. Обратите внимание, что дату также можно выбрать программно, используя слот setSelectedDate().
Текущий отображаемый месяц и год можно получить, соответственно, с помощью функций monthShown() и yearShown().
Новый календарный виджет использует сокращенные названия дней, а суббота и воскресенье выделены красным цветом. Сетка календаря не отображается. Выводятся номера недель, и первым днём недели является первый день недели для региональных настроек календаря.
Формат дней можно изменить на однобуквенные аббревиатуры ("Пн" для "Понедельник"), установив свойство horizontalHeaderFormat в значение QCalendarWidget::SingleLetterDayNames. Установка этого же свойства в значение QCalendarWidget::LongDayNames отобразит полные названия дней в заголовке. Номера недель можно удалить, установив свойство verticalHeaderFormat в значение QCalendarWidget::NoVerticalHeader. Сетка календаря может быть включена, установив свойство gridVisible в значение true с помощью функции setGridVisible():
QCalendarWidget *calendar; calendar->setGridVisible(true); |
Наконец, день в первой колонке можно изменить с помощью функции setFirstDayOfWeek().
Класс QCalendarWidget также предоставляет три сигнала: selectionChanged(), activated() и currentPageChanged(), что позволяет реагировать на взаимодействие пользователя.
Отображение заголовков, дней недели или отдельных дней можно существенно настроить, установив QTextCharFormat для некоторых особых дней недели, специальной даты или для отображения заголовков.
Только подмножество свойств в QTextCharFormat используется виджетом календаря. В настоящее время используются свойства foreground, background и font для определения отображения отдельных ячеек в виджете.
См. также QDate, QDateEdit и QTextCharFormat.
Документация типов членов
перечисление QCalendarWidget::HorizontalHeaderFormat
Это перечисление определяет различные форматы, которые может отображать горизонтальный заголовок.
| Постоянная | Значение | Описание |
|---|---|---|
QCalendarWidget::SingleLetterDayNames |
1 |
Заголовок отображает однобуквенную аббревиатуру для дней недели (например, Пн для понедельника). |
QCalendarWidget::ShortDayNames |
2 |
Заголовок отображает короткую аббревиатуру для дней недели (например, Пн для понедельника). |
QCalendarWidget::LongDayNames |
3 |
Заголовок отображает полные названия дней недели (например, Понедельник). |
QCalendarWidget::NoHorizontalHeader |
0 |
Заголовок скрыт. |
См. также horizontalHeaderFormat() и VerticalHeaderFormat.
перечисление QCalendarWidget::SelectionMode
Это перечисление описывает типы выбора, предлагаемые пользователю для выбора дат в календаре.
| Постоянная | Значение | Описание |
|---|---|---|
QCalendarWidget::NoSelection |
0 |
Даты нельзя выбрать. |
QCalendarWidget::SingleSelection |
1 |
Можно выбрать одну дату. |
См. также selectionMode.
перечисление QCalendarWidget::VerticalHeaderFormat
Это перечисление определяет различные форматы, которые может отображать вертикальный заголовок.
| Постоянная | Значение | Описание |
|---|---|---|
QCalendarWidget::ISOWeekNumbers |
1 |
Заголовок отображает номера недель ISO, как описано в QDate::weekNumber(). |
QCalendarWidget::NoVerticalHeader |
0 |
Заголовок скрыт. |
См. также verticalHeaderFormat() и HorizontalHeaderFormat.
END_OF_DOCUMENT_MARKERДокументация свойств
dateEditAcceptDelay : int
Это свойство хранит время, в течение которого неактивное редактирование даты отображается, прежде чем его содержимое будет принято
Если редактирование даты в виджете календаря включено, это свойство определяет время (в миллисекундах), в течение которого редактирование даты остается открытым после последнего ввода пользователем. По истечении этого времени дата, указанная в редактировании даты, принимается, а всплывающее окно закрывается.
По умолчанию задержка установлена в 1500 миллисекунд (1,5 секунды).
Функции доступа:
| int | dateEditAcceptDelay() const |
| void | setDateEditAcceptDelay(int delay) |
dateEditEnabled : bool
Это свойство указывает, включено ли всплывающее окно редактирования даты
Если это свойство включено, нажатие любой клавиши (кроме модификаторных) вызовет всплывающее окно редактирования даты, если виджет календаря имеет фокус, позволяя пользователю указать дату в формате, заданном текущим языковым стандартом.
По умолчанию это свойство включено.
Редактирование даты имеет более простой вид, чем QDateEdit, но позволяет пользователю перемещаться между полями с помощью клавиш «влево» и «вправо», увеличивать и уменьшать значения отдельных полей с помощью клавиш «вверх» и «вниз», а также вводить значения напрямую с помощью цифровых клавиш.
Функции доступа:
| bool | isDateEditEnabled() const |
| void | setDateEditEnabled(bool enable) |
См. также QCalendarWidget::dateEditAcceptDelay.
firstDayOfWeek : Qt::DayOfWeek
Это свойство содержит значение, определяющее день, отображаемый в первой колонке.
По умолчанию в первой колонке отображается первый день недели для региональных настроек календаря.
Функции доступа:
| Qt::DayOfWeek | firstDayOfWeek() const |
| void | setFirstDayOfWeek(Qt::DayOfWeek dayOfWeek) |
gridVisible : bool
Это свойство указывает, отображается ли сетка таблицы.
QCalendarWidget *calendar; calendar->setGridVisible(true); |
Значение по умолчанию — false.
Функции доступа:
| bool | isGridVisible() const |
| void | setGridVisible(bool show) |
horizontalHeaderFormat : HorizontalHeaderFormat
Это свойство определяет формат горизонтальной заголовка.
Значение по умолчанию — QCalendarWidget::ShortDayNames.
Функции доступа:
| QCalendarWidget::HorizontalHeaderFormat | horizontalHeaderFormat() const |
| void | setHorizontalHeaderFormat(QCalendarWidget::HorizontalHeaderFormat format) |
maximumDate : QDate
Это свойство хранит максимальную дату текущего заданного диапазона дат.
Пользователь не сможет выбрать дату, которая следует за текущей максимальной датой.
QCalendarWidget *calendar; calendar->setGridVisible(true); calendar->setMaximumDate(QDate(2006, 7, 3)); |
По умолчанию максимальная дата — последний день, который может обработать класс QDate.
При установке максимальной даты свойства minimumDate и selectedDate корректируются, если диапазон выбора становится некорректным. Если предоставленная дата не является допустимым объектом QDate, функция setMaximumDate() ничего не делает.
Функции доступа:
| QDate | maximumDate() const |
| void | setMaximumDate(QDate date) |
См. также setDateRange().
minimumDate : QDate
Это свойство хранит минимальную дату текущего заданного диапазона дат.
Пользователь не сможет выбрать дату, которая предшествует текущей минимальной дате.
QCalendarWidget *calendar; calendar->setGridVisible(true); calendar->setMinimumDate(QDate(2006, 6, 19)); |
По умолчанию минимальная дата — самая ранняя дата, которую может обработать класс QDate.
При установке минимальной даты свойства maximumDate и selectedDate корректируются, если диапазон выбора становится некорректным. Если предоставленная дата не является допустимым объектом QDate, функция setMinimumDate() ничего не делает.
Функции доступа:
| QDate | minimumDate() const |
| void | setMinimumDate(QDate date) |
См. также setDateRange().
navigationBarVisible : bool
Это свойство указывает, отображается ли панель навигации
Когда это свойство true (по умолчанию), отображаются элементы управления для перехода к следующему/предыдущему месяцу, выбору месяца и года вверху.
При установке свойства в false, эти элементы управления скрываются.
Функции доступа:
| bool | isNavigationBarVisible() const |
| void | setNavigationBarVisible(bool visible) |
selectedDate : QDate
Это свойство содержит текущую выбранную дату.
Выбранная дата должна находиться в диапазоне дат, заданном свойствами minimumDate и maximumDate. По умолчанию выбранной датой является текущая дата.
Функции доступа:
| QDate | selectedDate() const |
| void | setSelectedDate(QDate date) |
См. также setDateRange().
selectionMode : SelectionMode
Это свойство определяет тип выбора, который может осуществлять пользователь в календаре
При установке этого свойства в SingleSelection пользователь может выбрать дату в пределах допустимых минимальной и максимальной дат, используя мышь или клавиатуру.
При установке свойства в NoSelection пользователь не сможет выбирать даты, но сможет выбирать их программно. Обратите внимание, что дата, которая выбрана, когда свойство установлено в NoSelection, по-прежнему будет выбранной датой календаря.
Значение по умолчанию — SingleSelection.
Функции доступа:
| QCalendarWidget::SelectionMode | selectionMode() const |
| void | setSelectionMode(QCalendarWidget::SelectionMode mode) |
verticalHeaderFormat : VerticalHeaderFormat
Это свойство содержит формат вертикального заголовка.
Значение по умолчанию — QCalendarWidget::ISOWeekNumber.
Функции доступа:
| QCalendarWidget::VerticalHeaderFormat | verticalHeaderFormat() const |
| void | setVerticalHeaderFormat(QCalendarWidget::VerticalHeaderFormat format) |
Документация по членам-функциям
QCalendarWidget::QCalendarWidget(QWidget *parent = nullptr)
Создаёт виджет календаря с заданным parent.
Виджет инициализируется текущим месяцем и годом, и выбранной датой является сегодняшняя дата.
См. также setCurrentPage().
[signal] void QCalendarWidget::activated(QDate date)
Этот сигнал испускается всякий раз, когда пользователь нажимает клавиши Ввод или Enter, или дважды щелкает по дате date в виджете календаря.
[signal] void QCalendarWidget::clicked(QDate date)
Этот сигнал испускается, когда нажимается кнопка мыши. Дата, по которой был нажат клик, указана параметром date. Сигнал испускается только при нажатии на допустимую дату, например, даты не находятся вне диапазона minimumDate() и maximumDate(). Если режим выбора равен NoSelection, этот сигнал не будет испущен.
[signal] void QCalendarWidget::currentPageChanged(int year, int month)
Этот сигнал испускается, когда текущий отображаемый месяц меняется. Новый год и месяц передаются в качестве параметров.
См. также setCurrentPage().
[signal] void QCalendarWidget::selectionChanged()
Этот сигнал испускается, когда изменяется текущая выбранная дата.
Текущую выбранную дату пользователь может изменить с помощью мыши или клавиатуры, или программист может изменить её с помощью setSelectedDate().
См. также selectedDate().
[slot] void QCalendarWidget::setCurrentPage(int year, int month)
Отображает указанный месяц указанного года без изменения выбранной даты. Используйте функцию setSelectedDate(), чтобы изменить выбранную дату.
Текущий отображаемый месяц и год можно получить с помощью функций monthShown() и yearShown() соответственно.
См. также yearShown(), monthShown(), showPreviousMonth(), showNextMonth(), showPreviousYear() и showNextYear().
[slot] void QCalendarWidget::setDateRange(QDate min, QDate max)
Определяет диапазон дат, устанавливая свойства minimumDate и maximumDate.
Диапазон дат ограничивает выбор пользователя, т.е. пользователь может выбирать только даты в указанном диапазоне дат. Обратите внимание, что
QCalendarWidget *calendar; calendar->setDateRange(min, max);
аналогично
QCalendarWidget *calendar; calendar->setMinimumDate(min); calendar->setMaximumDate(max);
Если любой из параметров min или max не является допустимым объектом QDate, эта функция ничего не делает.
См. также setMinimumDate() и setMaximumDate().
[slot] void QCalendarWidget::showNextMonth()
Отображает следующий месяц относительно текущего отображаемого месяца. Обратите внимание, что выбранная дата не изменяется.
См. также showPreviousMonth(), setCurrentPage() и setSelectedDate().
[slot] void QCalendarWidget::showNextYear()
Отображает текущий отображаемый месяц в следующем году относительно текущего отображаемого года. Обратите внимание, что выбранная дата не изменяется.
См. также showPreviousYear(), setCurrentPage() и setSelectedDate().
[slot] void QCalendarWidget::showPreviousMonth()
Отображает предыдущий месяц относительно текущего отображаемого месяца. Обратите внимание, что выбранная дата не изменяется.
См. также showNextMonth(), setCurrentPage() и setSelectedDate().
[slot] void QCalendarWidget::showPreviousYear()
Отображает текущий отображаемый месяц в предыдущем году относительно текущего отображаемого года. Обратите внимание, что выбранная дата не изменяется.
См. также showNextYear(), setCurrentPage() и setSelectedDate().
[slot] void QCalendarWidget::showSelectedDate()
Отображает месяц выбранной даты.
См. также selectedDate() и setCurrentPage().
[slot] void QCalendarWidget::showToday()
Отображает месяц сегодняшней даты.
См. также selectedDate() и setCurrentPage().
[virtual] QCalendarWidget::~QCalendarWidget()
Уничтожает виджет календаря.
QMap<QDate, QTextCharFormat> QCalendarWidget::dateTextFormat() const
Возвращает QMap из QDate в QTextCharFormat, показывающий все даты, использующие специальный формат, изменяющий их отображение.
См. также setDateTextFormat().
QTextCharFormat QCalendarWidget::dateTextFormat(QDate date) const
Возвращает QTextCharFormat для date. Формат символов может быть пустым, если дата не отображается особым образом.
[override virtual protected] bool QCalendarWidget::event(QEvent *event)
Переопределяет: QWidget::event(QEvent *event).
[override virtual protected] bool QCalendarWidget::eventFilter(QObject *watched, QEvent *event)
Переопределяет: QObject::eventFilter(QObject *watched, QEvent *event).
QTextCharFormat QCalendarWidget::headerTextFormat() const
Возвращает формат символов текста для отображения заголовка.
См. также setHeaderTextFormat().
[override virtual protected] void QCalendarWidget::keyPressEvent(QKeyEvent *event)
Переопределяет: QWidget::keyPressEvent(QKeyEvent *event).
[override virtual] QSize QCalendarWidget::minimumSizeHint() const
Переопределяет функцию доступа к свойству: QWidget::minimumSizeHint.
int QCalendarWidget::monthShown() const
Возвращает текущий отображаемый месяц. Месяцы пронумерованы от 1 до 12.
См. также yearShown() и setCurrentPage().
[override virtual protected] void QCalendarWidget::mousePressEvent(QMouseEvent *event)
Переопределяет: QWidget::mousePressEvent(QMouseEvent *event).
[virtual protected] void QCalendarWidget::paintCell(QPainter *painter, const QRect &rect, QDate date) const
Отображает ячейку, заданную данной датой, с использованием указанного painter и rect.
[override virtual protected] void QCalendarWidget::resizeEvent(QResizeEvent *event)
Переопределяет: QWidget::resizeEvent(QResizeEvent *event).
void QCalendarWidget::setDateTextFormat(QDate date, const QTextCharFormat &format)
Устанавливает формат, используемый для отображения заданной даты, на тот, который задан параметром format.
Если date равно null, все форматы дат очищаются.
См. также dateTextFormat().
void QCalendarWidget::setHeaderTextFormat(const QTextCharFormat &format)
Устанавливает формат символов текста для отображения заголовка в format. Если также установлен формат текста для дня недели, цвет переднего и заднего фона этого формата будет иметь приоритет над форматом заголовка. Другая информация о форматировании всё равно будет определяться форматом заголовка.
См. также headerTextFormat().
void QCalendarWidget::setWeekdayTextFormat(Qt::DayOfWeek dayOfWeek, const QTextCharFormat &format)
Устанавливает формат символов текста для отображения дня недели dayOfWeek в format. Формат будет иметь приоритет над форматом заголовка в случае цвета переднего и заднего фона. Другая информация о форматировании текста будет взята из формата заголовка.
См. также weekdayTextFormat() и setHeaderTextFormat().
[override virtual] QSize QCalendarWidget::sizeHint() const
Переопределяет функцию доступа к свойству: QWidget::sizeHint.
[protected] void QCalendarWidget::updateCell(QDate date)
Обновляет ячейку, указанную заданной датой date, если обновления не отключены и ячейка не скрыта.
См. также updateCells(), yearShown() и monthShown().
[protected] void QCalendarWidget::updateCells()
Обновляет все видимые ячейки, если обновления не отключены.
См. также updateCell().
QTextCharFormat QCalendarWidget::weekdayTextFormat(Qt::DayOfWeek dayOfWeek) const
Возвращает формат символов текста для отображения дня недели dayOfWeek.
См. также setWeekdayTextFormat() и headerTextFormat().
int QCalendarWidget::yearShown() const
Возвращает год текущего отображаемого месяца. Месяцы нумеруются от 1 до 12.
См. также monthShown() и setCurrentPage().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.1/qcalendarwidget.html