Класс QCalendarWidget
Класс QCalendarWidget предоставляет виджет календаря, отображающий месяц, позволяя пользователю выбирать дату. Подробнее...
| Заголовок: | #include <QCalendarWidget> |
| CMake: | find_package(Qt6 COMPONENTS Widgets REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| Наследуется от: | QWidget |
Общие типы
| Перечисление | ФорматГоризонтальнойШапки { ОднобуквенныеДниНедели, КороткоеИмяДнейНедели, ПолноеИмяДнейНедели, БезГоризонтальнойШапки } |
| Перечисление | РежимВыделения { БезВыделения, ОднократноеВыделение } |
| Перечисление | ФорматВертикальнойШапки { НомераНедельISO, БезВертикальнойШапки } |
Свойства
|
|
Открытые функции
| QCalendarWidget(QWidget *parent = nullptr) | |
| virtual | ~QCalendarWidget() |
| int | задержкаПринятияДаты() const |
| QMap<QDate, QTextCharFormat> | форматТекстаДаты() const |
| QTextCharFormat | форматТекстаДаты(QDate date) const |
| Qt::DayOfWeek | первыйДеньНедели() const |
| QTextCharFormat | форматТекстаЗаголовка() const |
| QCalendarWidget::ФорматГоризонтальнойШапки | форматГоризонтальнойШапки() const |
| bool | естьРедактированиеДаты() const |
| bool | сеткаВидима() const |
| bool | навигацияВидима() const |
| QDate | максимальнаяДата() const |
| QDate | минимальнаяДата() const |
| int | отображаемыйМесяц() const |
| QDate | выбраннаяДата() const |
| QCalendarWidget::РежимВыделения | режимВыделения() const |
| void | установитьЗадержкуПринятияДаты(int delay) |
| void | включитьРежимРедактированияДаты(bool enable) |
| void | установитьФорматТекстаДаты(QDate date, const QTextCharFormat &format) |
| void | установитьПервыйДеньНедели(Qt::DayOfWeek dayOfWeek) |
| void | установитьФорматТекстаЗаголовка(const QTextCharFormat &format) |
| void | установитьФорматГоризонтальнойШапки(QCalendarWidget::ФорматГоризонтальнойШапки format) |
| void | установитьМаксимальнуюДату(QDate date) |
| void | установитьМинимальнуюДату(QDate date) |
| void | установитьРежимВыделения(QCalendarWidget::РежимВыделения mode) |
| void | установитьФорматВертикальнойШапки(QCalendarWidget::ФорматВертикальнойШапки format) |
| void | установитьФорматТекстаДняНедели(Qt::DayOfWeek dayOfWeek, const QTextCharFormat &format) |
| QCalendarWidget::ФорматВертикальнойШапки | форматВертикальнойШапки() const |
| QTextCharFormat | форматТекстаДняНедели(Qt::DayOfWeek dayOfWeek) const |
| int | отображаемыйГод() const |
Переопределённые открытые функции
| virtual QSize | минимальныйРазмер() const override |
| virtual QSize | размер() const override |
Открытые слоты
| void | установитьТекущуюСтраницу(int год, int месяц) |
| void | установитьДиапазонДат(QDate min, QDate max) |
| void | установитьВидимостьСетки(bool отображать) |
| void | установитьВидимостьПанелиНавигации(bool видимость) |
| void | установитьВыбраннуюДату(QDate дата) |
| void | показатьСледующийМесяц() |
| void | показатьСледующийГод() |
| void | показатьПредыдущийМесяц() |
| void | показатьПредыдущийГод() |
| void | отобразитьВыбраннуюДату() |
| void | показатьТекущуюДату() |
Сигналы
| void | активировано(QDate дата) |
| void | нажато(QDate дата) |
| void | измененаТекущаяСтраница(int год, int месяц) |
| void | измененоВыделение() |
Защищенные функции
| virtual void | отобразитьЯчейку(QPainter *painter, const QRect &rect, QDate дата) const |
| void | обновитьЯчейку(QDate дата) |
| void | обновитьЯчейки() |
Переопределенные защищенные функции
| virtual bool | обработатьСобитие(QEvent *событие) override |
| virtual bool | фильтрСобытий(QObject *отслеживаемый, QEvent *событие) override |
| virtual void | обработкаНажатияКлавиши(QKeyEvent *событие) override |
| virtual void | обработкаНажатияМыши(QMouseEvent *событие) override |
| virtual void | обработкаИзмененияРазмеры(QResizeEvent *событие) 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)
Этот сигнал испускается всякий раз, когда пользователь нажимает клавишу Возврат или Ввод или дважды щелкает по дате 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
Рисует ячейку, указанную заданной date, используя заданного painter и rect.
[override virtual protected] void QCalendarWidget::resizeEvent(QResizeEvent *event)
Переопределяет: QWidget::resizeEvent(QResizeEvent *event).
void QCalendarWidget::setDateTextFormat(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.
[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.2/qcalendarwidget.html