Класс QCalendarWidget
Класс QCalendarWidget предоставляет виджет календаря на основе месяца, позволяющий пользователю выбирать дату. Подробнее...
| Заголовок: | #include <QCalendarWidget> |
| qmake: | QT += widgets |
| С версии: | Qt 4.2 |
| Наследует: | QWidget |
Этот класс был введён в Qt 4.2.
Открытые типы
| Перечисление | ФорматГоризонтальнойЗаголовка { SingleLetterDayNames, ShortDayNames, LongDayNames, NoHorizontalHeader } |
| Перечисление | РежимВыборки { NoSelection, SingleSelection } |
| Перечисление | ФорматВертикальнойЗаголовка { ISOWeekNumbers, NoVerticalHeader } |
Свойства
|
|
Открытые функции
| QCalendarWidget(QWidget *parent = nullptr) | |
| virtual | ~QCalendarWidget() |
| int | dateEditAcceptDelay() const |
| QMap<QDate, QTextCharFormat> | dateTextFormat() const |
| QTextCharFormat | dateTextFormat(const 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(const QDate &date, const QTextCharFormat &format) |
| void | setFirstDayOfWeek(Qt::DayOfWeek dayOfWeek) |
| void | setHeaderTextFormat(const QTextCharFormat &format) |
| void | setHorizontalHeaderFormat(QCalendarWidget::HorizontalHeaderFormat format) |
| void | setMaximumDate(const QDate &date) |
| void | setMinimumDate(const 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 | setCurrentPage(int year, int month) |
| void | setDateRange(const QDate &min, const QDate &max) |
| void | setGridVisible(bool show) |
| void | setNavigationBarVisible(bool visible) |
| void | setSelectedDate(const QDate &date) |
| void | showNextMonth() |
| void | showNextYear() |
| void | showPreviousMonth() |
| void | showPreviousYear() |
| void | showSelectedDate() |
| void | showToday() |
Сигналы
| void | activated(const QDate &date) |
| void | clicked(const QDate &date) |
| void | currentPageChanged(int year, int month) |
| void | selectionChanged() |
Защищенные функции
| virtual void | paintCell(QPainter *painter, const QRect &rect, const QDate &date) const |
| void | updateCell(const QDate &date) |
| void | updateCells() |
Переопределенные защищенные функции
| virtual bool | event(QEvent *event) override |
| virtual bool | eventFilter(QObject *watched, QEvent *event) override |
| virtual void | keyPressEvent(QKeyEvent *event) override |
| virtual void | mousePressEvent(QMouseEvent *event) override |
| virtual void | resizeEvent(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.
Документация типов членов
enum QCalendarWidget::HorizontalHeaderFormat
Этот тип перечисления определяет различные форматы отображения горизонтального заголовка.
END_OF_DOCUMENT_MARKER| Постоянная | Значение | Описание |
|---|---|---|
QCalendarWidget::SingleLetterDayNames |
1 |
Заголовок отображает однобуквенное сокращение названий дней (например, В для понедельника). |
QCalendarWidget::ShortDayNames |
2 |
Заголовок отображает короткое сокращение названий дней (например, Пн для понедельника). |
QCalendarWidget::LongDayNames |
3 |
Заголовок отображает полные названия дней (например, Понедельник). |
QCalendarWidget::NoHorizontalHeader |
0 |
Заголовок скрыт. |
См. также horizontalHeaderFormat() и VerticalHeaderFormat.
enum QCalendarWidget::SelectionMode
Этот перечисление описывает типы выбора, предлагаемые пользователю для выбора дат в календаре.
| Постоянная | Значение | Описание |
|---|---|---|
QCalendarWidget::NoSelection |
0 |
Даты нельзя выбрать. |
QCalendarWidget::SingleSelection |
1 |
Можно выбрать одну дату. |
См. также selectionMode.
enum QCalendarWidget::VerticalHeaderFormat
Этот тип перечисления определяет различные форматы, которые может отображать вертикальный заголовок.
| Постоянная | Значение | Описание |
|---|---|---|
QCalendarWidget::ISOWeekNumbers |
1 |
Заголовок отображает номера недель ISO, как описано в QDate::weekNumber(). |
QCalendarWidget::NoVerticalHeader |
0 |
Заголовок скрыт. |
См. также verticalHeaderFormat() и HorizontalHeaderFormat.
Документация по свойствам
dateEditAcceptDelay : int
Это свойство хранит время, в течение которого неактивное редактирование даты отображается, прежде чем его содержимое будет принято.
Если редактирование даты в виджете календаря включено, это свойство определяет количество времени (в миллисекундах), в течение которого редактирование даты остается открытым после последнего ввода пользователем. По истечении этого времени дата, указанная в редактировании даты, принимается, а всплывающее окно закрывается.
По умолчанию задержка составляет 1500 миллисекунд (1,5 секунды).
Это свойство было введено в Qt 4.3.
Функции доступа:
| int | dateEditAcceptDelay() const |
| void | setDateEditAcceptDelay(int delay) |
dateEditEnabled : bool
Это свойство указывает, включено ли всплывающее окно редактирования даты.
Если это свойство включено, нажатие клавиши без модификаторов вызовет всплывающее окно редактирования даты, если виджет календаря имеет фокус, что позволит пользователю указать дату в формате, заданном текущим языковым окружением.
По умолчанию это свойство включено.
Редактирование даты имеет более простой вид, чем QDateEdit, но позволяет пользователю перемещаться между полями с помощью клавиш со стрелками влево и вправо, увеличивать и уменьшать отдельные поля с помощью клавиш со стрелками вверх и вниз и вводить значения непосредственно с помощью цифровых клавиш.
Это свойство было введено в Qt 4.3.
Функции доступа:
| 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(const 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(const QDate &date) |
См. также setDateRange().
navigationBarVisible : bool
Это свойство указывает, отображается ли панель навигации.
Когда это свойство true (по умолчанию), отображаются элементы управления следующего/предыдущего месяца, выбором месяца и года вверху.
При установке свойства в значение false эти элементы управления скрываются.
Это свойство было добавлено в Qt 4.3.
Функции доступа:
| bool | isNavigationBarVisible() const |
| void | setNavigationBarVisible(bool visible) |
selectedDate : QDate
Это свойство содержит текущую выбранную дату.
Выбранная дата должна находиться в диапазоне дат, заданном свойствами minimumDate и maximumDate. По умолчанию выбранная дата — текущая дата.
Функции доступа:
| QDate | selectedDate() const |
| void | setSelectedDate(const 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(const QDate &date)
Этот сигнал испускается всякий раз, когда пользователь нажимает клавиши ВВОД или Enter, или дважды щелкает по дате date в виджете календаря.
[signal] void QCalendarWidget::clicked(const 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(const QDate &min, const 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(const 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() const.
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, const QDate &date) const
Отображает ячейку, заданную данной date, используя заданного painter и rect.
[override virtual protected] void QCalendarWidget::resizeEvent(QResizeEvent *event)
Реализует: QWidget::resizeEvent(QResizeEvent *event).
void QCalendarWidget::setDateTextFormat(const QDate &date, const QTextCharFormat &format)
Устанавливает формат, используемый для рендеринга заданной даты date, в соответствии с 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() const.
[protected] void QCalendarWidget::updateCell(const QDate &date)
Обновляет ячейку, указанную заданной датой date, если обновления не отключены и ячейка не скрыта.
Эта функция была введена в Qt 4.4.
См. также updateCells(), yearShown() и monthShown().
[protected] void QCalendarWidget::updateCells()
Обновляет все видимые ячейки, если обновления не отключены.
Эта функция была введена в Qt 4.4.
См. также 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-5.13/qcalendarwidget.html