En esta página

QCalendarWidget Class

La clase QCalendarWidget proporciona un widget de calendario mensual que permite al usuario seleccionar una fecha. Más...

Cabecera: #include <QCalendarWidget>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Hereda: QWidget

Tipos públicos

enum HorizontalHeaderFormat { SingleLetterDayNames, ShortDayNames, LongDayNames, NoHorizontalHeader }
enum SelectionMode { NoSelection, SingleSelection }
enum VerticalHeaderFormat { ISOWeekNumbers, NoVerticalHeader }

Propiedades

Funciones públicas

QCalendarWidget(QWidget *parent = nullptr)
virtual ~QCalendarWidget()
QCalendar calendar() const
void clearMaximumDate()
void clearMinimumDate()
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 setCalendar(QCalendar c)
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

Funciones públicas reimplementadas

virtual QSize minimumSizeHint() const override
virtual QSize sizeHint() const override

Ranuras públicas

void setCurrentPage(int year, int month)
void setDateRange(QDate min, QDate max)
void setGridVisible(bool show)
void setNavigationBarVisible(bool visible)
void setSelectedDate(QDate date)
void showNextMonth()
void showNextYear()
void showPreviousMonth()
void showPreviousYear()
void showSelectedDate()
void showToday()

Señales

void activated(QDate date)
void clicked(QDate date)
void currentPageChanged(int year, int month)
void selectionChanged()

Funciones protegidas

virtual void paintCell(QPainter *painter, const QRect &rect, QDate date) const
void updateCell(QDate date)
void updateCells()

Funciones protegidas reimplementadas

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

Descripción Detallada

Widget de calendario que muestra el mes, el año y el día seleccionado

El widget se inicializa con el mes y año actuales, pero QCalendarWidget proporciona varios slots públicos para cambiar el año y mes que se muestra.

Por defecto, la fecha de hoy está seleccionada, y el usuario puede seleccionar una fecha usando tanto el ratón como el teclado. La fecha seleccionada actualmente puede recuperarse utilizando la función selectedDate(). Es posible limitar la selección del usuario a un intervalo de fechas determinado estableciendo las propiedades minimumDate y maximumDate. Alternativamente, ambas propiedades pueden establecerse de una sola vez utilizando la ranura de conveniencia setDateRange(). Establezca la propiedad selectionMode en NoSelection para que el usuario no pueda realizar ninguna selección. Tenga en cuenta que una fecha también puede seleccionarse mediante programación utilizando la ranura setSelectedDate().

El mes y el año mostrados actualmente pueden recuperarse utilizando las funciones monthShown() y yearShown(), respectivamente.

Un widget de calendario recién creado utiliza nombres de días abreviados, y tanto los sábados como los domingos aparecen marcados en rojo. La cuadrícula del calendario no es visible. Se muestran los números de la semana, y el primer día de la columna es el primer día de la semana para la configuración regional del calendario.

La notación de los días puede modificarse a abreviaturas de una sola letra ("M" para "lunes") estableciendo la propiedad horizontalHeaderFormat a QCalendarWidget::SingleLetterDayNames. Estableciendo la misma propiedad a QCalendarWidget::LongDayNames hace que la cabecera muestre los nombres completos de los días. Los números de la semana pueden eliminarse estableciendo la propiedad verticalHeaderFormat a QCalendarWidget::NoVerticalHeader. La cuadrícula del calendario puede activarse estableciendo la propiedad gridVisible a true mediante la función setGridVisible():

Widget de calendario con cuadrícula visible

QCalendarWidget *calendar;
calendar->setGridVisible(true);

Por último, el día de la primera columna puede modificarse mediante la función setFirstDayOfWeek().

La clase QCalendarWidget también proporciona tres señales, selectionChanged(), activated() y currentPageChanged() que permiten responder a la interacción del usuario.

La representación de las cabeceras, días de la semana o días sueltos puede personalizarse en gran medida configurando QTextCharFormat's para algún día de la semana especial, una fecha especial o para la representación de las cabeceras.

El widget de calendario sólo utiliza un subconjunto de las propiedades de QTextCharFormat. Actualmente, las propiedades de primer plano, fondo y fuente se utilizan para determinar la representación de celdas individuales en el widget.

Véase también QDate, QDateEdit, y QTextCharFormat.

Documentación de tipos de miembros

enum QCalendarWidget::HorizontalHeaderFormat

Este tipo enum define los distintos formatos que puede mostrar la cabecera horizontal.

ConstanteValorDescripción
QCalendarWidget::SingleLetterDayNames1La cabecera muestra una abreviatura de una sola letra para los nombres de los días (por ejemplo, M de lunes).
QCalendarWidget::ShortDayNames2La cabecera muestra una abreviatura corta para los nombres de los días (por ejemplo, Lun para Lunes).
QCalendarWidget::LongDayNames3La cabecera muestra los nombres completos de los días (por ejemplo, lunes).
QCalendarWidget::NoHorizontalHeader0La cabecera está oculta.

Véase también horizontalHeaderFormat() y VerticalHeaderFormat.

enum QCalendarWidget::SelectionMode

Este enum describe los tipos de selección ofrecidos al usuario para seleccionar fechas en el calendario.

ConstanteValorDescripción
QCalendarWidget::NoSelection0No se pueden seleccionar fechas.
QCalendarWidget::SingleSelection1Se pueden seleccionar fechas sueltas.

Véase también selectionMode.

enum QCalendarWidget::VerticalHeaderFormat

Este tipo enum define los distintos formatos que puede mostrar la cabecera vertical.

ConstanteValorDescripción
QCalendarWidget::ISOWeekNumbers1La cabecera muestra los números de semana ISO como se describe en QDate::weekNumber().
QCalendarWidget::NoVerticalHeader0La cabecera está oculta.

Véase también verticalHeaderFormat() y HorizontalHeaderFormat.

Documentación de propiedades

dateEditAcceptDelay : int

Esta propiedad mantiene el tiempo que se muestra una edición de fecha inactiva antes de que se acepte su contenido

Si el widget de calendario es date edit is enabled, esta propiedad especifica la cantidad de tiempo (en milisegundos) que la edición de fecha permanece abierta después de la última entrada del usuario. Una vez transcurrido este tiempo, se acepta la fecha especificada en la edición de fecha y se cierra la ventana emergente.

Por defecto, el retardo está definido en 1500 milisegundos (1,5 segundos).

Funciones de acceso:

int dateEditAcceptDelay() const
void setDateEditAcceptDelay(int delay)

dateEditEnabled : bool

Esta propiedad indica si la ventana emergente de edición de fecha está habilitada.

Si esta propiedad está habilitada, al pulsar una tecla no modificadora aparecerá una ventana emergente de edición de fecha si el widget de calendario tiene el foco, permitiendo al usuario especificar una fecha en la forma especificada por la localización actual.

Por defecto, esta propiedad está activada.

La edición de fecha es más simple en apariencia que QDateEdit, pero permite al usuario navegar entre los campos utilizando las teclas de cursor izquierda y derecha, incrementar y decrementar campos individuales utilizando las teclas de cursor arriba y abajo, e introducir valores directamente utilizando las teclas numéricas.

Funciones de acceso:

bool isDateEditEnabled() const
void setDateEditEnabled(bool enable)

Véase también QCalendarWidget::dateEditAcceptDelay.

firstDayOfWeek : Qt::DayOfWeek

Esta propiedad contiene un valor que identifica el día mostrado en la primera columna.

Por defecto, el día mostrado en la primera columna es el primer día de la semana para la configuración regional del calendario.

Funciones de acceso:

Qt::DayOfWeek firstDayOfWeek() const
void setFirstDayOfWeek(Qt::DayOfWeek dayOfWeek)

gridVisible : bool

Esta propiedad indica si se muestra la rejilla de la tabla.

Widget de calendario visible
QCalendarWidget *calendar;
calendar->setGridVisible(true);

El valor por defecto es false.

Funciones de acceso:

bool isGridVisible() const
void setGridVisible(bool show)

horizontalHeaderFormat : HorizontalHeaderFormat

Esta propiedad contiene el formato de la cabecera horizontal.

El valor por defecto es QCalendarWidget::ShortDayNames.

Funciones de acceso:

QCalendarWidget::HorizontalHeaderFormat horizontalHeaderFormat() const
void setHorizontalHeaderFormat(QCalendarWidget::HorizontalHeaderFormat format)

maximumDate : QDate

Esta propiedad contiene la fecha máxima del intervalo de fechas especificado actualmente.

El usuario no podrá seleccionar una fecha que sea posterior a la fecha máxima establecida actualmente.

Widget de calendario con las fechas desactivadas después de la fecha máxima

QCalendarWidget *calendar;
calendar->setGridVisible(true);
calendar->setMaximumDate(QDate(2006, 7, 3));

Al establecer una fecha máxima, las propiedades minimumDate y selectedDate se ajustan si el rango de selección deja de ser válido. Si la fecha proporcionada no es un objeto QDate válido, la función setMaximumDate() no hace nada.

La fecha máxima por defecto es el 31 de diciembre de 9999 CE. Puede restaurar este valor por defecto llamando a clearMaximumDate() (desde Qt 6.6).

Funciones de acceso:

QDate maximumDate() const
void setMaximumDate(QDate date)
void clearMaximumDate()

Véase también setDateRange().

minimumDate : QDate

Esta propiedad contiene la fecha mínima del intervalo de fechas especificado actualmente.

El usuario no podrá seleccionar una fecha anterior a la fecha mínima establecida actualmente.

Widget de calendario con las fechas desactivadas antes de la fecha mínima

QCalendarWidget *calendar;
calendar->setGridVisible(true);
calendar->setMinimumDate(QDate(2006, 6, 19));

Al establecer una fecha mínima, las propiedades maximumDate y selectedDate se ajustan si el rango de selección deja de ser válido. Si la fecha proporcionada no es un objeto QDate válido, la función setMinimumDate() no hace nada.

La fecha mínima por defecto es el 25 de noviembre de 4714 AEC. Puede restablecer este valor por defecto llamando a clearMinimumDate() (desde Qt 6.6).

Funciones de acceso:

QDate minimumDate() const
void setMinimumDate(QDate date)
void clearMinimumDate()

Véase también setDateRange().

Esta propiedad indica si la barra de navegación se muestra o no.

Cuando esta propiedad es true (por defecto), los controles de mes siguiente, mes anterior, selección de mes, selección de año se muestran en la parte superior.

Cuando la propiedad es falsa, estos controles se ocultan.

Funciones de acceso:

bool isNavigationBarVisible() const
void setNavigationBarVisible(bool visible)

selectedDate : QDate

Esta propiedad contiene la fecha seleccionada actualmente.

La fecha seleccionada debe estar dentro del rango de fechas especificado por las propiedades minimumDate y maximumDate. Por defecto, la fecha seleccionada es la fecha actual.

Funciones de acceso:

QDate selectedDate() const
void setSelectedDate(QDate date)

Véase también setDateRange().

selectionMode : SelectionMode

Esta propiedad contiene el tipo de selección que el usuario puede hacer en el calendario

Cuando esta propiedad está establecida a SingleSelection, el usuario puede seleccionar una fecha dentro de las fechas mínimas y máximas permitidas, utilizando el ratón o el teclado.

Cuando la propiedad está establecida a NoSelection, el usuario no podrá seleccionar fechas, pero aún podrán ser seleccionadas mediante programación. Tenga en cuenta que la fecha seleccionada cuando la propiedad está establecida a NoSelection seguirá siendo la fecha seleccionada del calendario.

El valor por defecto es SingleSelection.

Funciones de acceso:

QCalendarWidget::SelectionMode selectionMode() const
void setSelectionMode(QCalendarWidget::SelectionMode mode)

verticalHeaderFormat : VerticalHeaderFormat

Esta propiedad contiene el formato de la cabecera vertical.

El valor por defecto es QCalendarWidget::ISOWeekNumber.

Funciones de acceso:

QCalendarWidget::VerticalHeaderFormat verticalHeaderFormat() const
void setVerticalHeaderFormat(QCalendarWidget::VerticalHeaderFormat format)

Documentación de funciones miembro

[explicit] QCalendarWidget::QCalendarWidget(QWidget *parent = nullptr)

Crea un widget de calendario con la dirección parent.

El widget se inicializa con el mes y año actuales, y la fecha seleccionada es hoy.

Véase también setCurrentPage().

[virtual noexcept] QCalendarWidget::~QCalendarWidget()

Destruye el widget de calendario.

[signal] void QCalendarWidget::activated(QDate date)

Esta señal se emite cada vez que el usuario pulsa la tecla Retorno o Intro o hace doble clic en un date en el widget de calendario.

QCalendar QCalendarWidget::calendar() const

Informa del sistema de calendario utilizado por este widget.

Véase también setCalendar().

[signal] void QCalendarWidget::clicked(QDate date)

Esta señal se emite cuando se pulsa el botón del ratón. La fecha en la que se ha pulsado el botón del ratón se especifica en date. La señal sólo se emite cuando se hace clic en una fecha válida, por ejemplo, las fechas que no se encuentran fuera de minimumDate() y maximumDate(). Si el modo de selección es NoSelection, esta señal no se emitirá.

[signal] void QCalendarWidget::currentPageChanged(int year, int month)

Esta señal se emite cuando se cambia el mes mostrado actualmente. Los nuevos year y month se pasan como parámetros.

Véase también setCurrentPage().

QMap<QDate, QTextCharFormat> QCalendarWidget::dateTextFormat() const

Devuelve un QMap de QDate a QTextCharFormat mostrando todas las fechas que utilizan un formato especial que altera su representación.

Véase también setDateTextFormat().

QTextCharFormat QCalendarWidget::dateTextFormat(QDate date) const

Devuelve un QTextCharFormat para date. El formato char puede estar vacío si la fecha no se renderiza de forma especial.

[override virtual protected] bool QCalendarWidget::event(QEvent *event)

Reimplementa: QWidget::event(QEvent *event).

[override virtual protected] bool QCalendarWidget::eventFilter(QObject *watched, QEvent *event)

Reimplementa: QObject::eventFilter(QObject *watched, QEvent *event).

QTextCharFormat QCalendarWidget::headerTextFormat() const

Devuelve el formato de caracteres de texto para representar la cabecera.

Véase también setHeaderTextFormat().

[override virtual protected] void QCalendarWidget::keyPressEvent(QKeyEvent *event)

Reimplementa: QWidget::keyPressEvent(QKeyEvent *event).

[override virtual] QSize QCalendarWidget::minimumSizeHint() const

Reimplementa una función de acceso para la propiedad: QWidget::minimumSizeHint.

int QCalendarWidget::monthShown() const

Devuelve el mes mostrado actualmente. Los meses se numeran del 1 al 12.

Véase también yearShown() y setCurrentPage().

[override virtual protected] void QCalendarWidget::mousePressEvent(QMouseEvent *event)

Reimplementa: QWidget::mousePressEvent(QMouseEvent *event).

[virtual protected] void QCalendarWidget::paintCell(QPainter *painter, const QRect &rect, QDate date) const

Pinta la celda especificada por date, utilizando painter y rect.

[override virtual protected] void QCalendarWidget::resizeEvent(QResizeEvent *event)

Reimplementa: QWidget::resizeEvent(QResizeEvent *event).

[signal] void QCalendarWidget::selectionChanged()

Esta señal se emite cuando se cambia la fecha actualmente seleccionada.

La fecha seleccionada puede ser modificada por el usuario mediante el ratón o el teclado, o por el programador mediante setSelectedDate().

Véase también selectedDate().

void QCalendarWidget::setCalendar(QCalendar c)

Establece c como el sistema de calendario a utilizar por este widget.

El widget puede utilizar cualquier sistema de calendario soportado. Por defecto, utiliza el calendario gregoriano.

Véase también calendar().

[slot] void QCalendarWidget::setCurrentPage(int year, int month)

Muestra el month dado del year dado sin cambiar la fecha seleccionada. Utilice la función setSelectedDate() para modificar la fecha seleccionada.

El mes y el año mostrados actualmente pueden recuperarse utilizando las funciones monthShown() y yearShown() respectivamente.

Véase también yearShown(), monthShown(), showPreviousMonth(), showNextMonth(), showPreviousYear() y showNextYear().

[slot] void QCalendarWidget::setDateRange(QDate min, QDate max)

Define un intervalo de fechas estableciendo las propiedades minimumDate y maximumDate.

El intervalo de fechas restringe la selección del usuario, es decir, el usuario sólo puede seleccionar fechas dentro del intervalo de fechas especificado. Tenga en cuenta que

QCalendarWidget *calendar;

calendar->setDateRange(min, max);

es análogo a

QCalendarWidget *calendar;

calendar->setMinimumDate(min);
calendar->setMaximumDate(max);

Si los parámetros min o max no son objetos QDate válidos, esta función no hace nada.

Véase también setMinimumDate() y setMaximumDate().

void QCalendarWidget::setDateTextFormat(QDate date, const QTextCharFormat &format)

Establece el formato utilizado para representar el date dado al especificado por format.

Si date es nulo, se borran todos los formatos de fecha.

Véase también dateTextFormat().

void QCalendarWidget::setHeaderTextFormat(const QTextCharFormat &format)

Establece el formato de caracteres de texto para representar la cabecera en format. Si también establece un formato de texto de día de la semana, el color de primer plano y de fondo de este formato tendrá prioridad sobre el formato de la cabecera. El resto de la información de formato seguirá estando determinada por el formato de la cabecera.

Véase también headerTextFormat().

void QCalendarWidget::setWeekdayTextFormat(Qt::DayOfWeek dayOfWeek, const QTextCharFormat &format)

Establece el formato de caracteres de texto para la representación del día de la semana dayOfWeek a format. El formato tendrá prioridad sobre el formato de cabecera en caso de color de primer plano y de fondo. El resto de la información de formato de texto se toma del formato de cabecera.

Véase también weekdayTextFormat() y setHeaderTextFormat().

[slot] void QCalendarWidget::showNextMonth()

Muestra el mes siguiente en relación con el mes visualizado actualmente. Tenga en cuenta que la fecha seleccionada no se modifica.

Véase también showPreviousMonth(), setCurrentPage() y setSelectedDate().

[slot] void QCalendarWidget::showNextYear()

Muestra el mes actualmente visualizado en el año siguiente en relación con el año actualmente visualizado. Tenga en cuenta que la fecha seleccionada no se modifica.

Véase también showPreviousYear(), setCurrentPage() y setSelectedDate().

[slot] void QCalendarWidget::showPreviousMonth()

Muestra el mes anterior en relación con el mes visualizado actualmente. Tenga en cuenta que la fecha seleccionada no se modifica.

Véase también showNextMonth(), setCurrentPage() y setSelectedDate().

[slot] void QCalendarWidget::showPreviousYear()

Muestra el mes actual del año anterior en relación con el año actual. Tenga en cuenta que la fecha seleccionada no se modifica.

Véase también showNextYear(), setCurrentPage() y setSelectedDate().

[slot] void QCalendarWidget::showSelectedDate()

Muestra el mes de la fecha seleccionada.

Véase también selectedDate() y setCurrentPage().

[slot] void QCalendarWidget::showToday()

Muestra el mes de la fecha actual.

Véase también selectedDate() y setCurrentPage().

[override virtual] QSize QCalendarWidget::sizeHint() const

Reimplementa una función de acceso para la propiedad: QWidget::sizeHint.

[protected] void QCalendarWidget::updateCell(QDate date)

Actualiza la celda especificada en date a menos que las actualizaciones estén desactivadas o la celda esté oculta.

Véase también updateCells(), yearShown() y monthShown().

[protected] void QCalendarWidget::updateCells()

Actualiza todas las celdas visibles a menos que las actualizaciones estén desactivadas.

Véase también updateCell().

QTextCharFormat QCalendarWidget::weekdayTextFormat(Qt::DayOfWeek dayOfWeek) const

Devuelve el formato de caracteres de texto para la representación del día de la semana dayOfWeek.

Véase también setWeekdayTextFormat() y headerTextFormat().

int QCalendarWidget::yearShown() const

Devuelve el año del mes mostrado actualmente. Los meses se numeran del 1 al 12.

Véase también monthShown() y setCurrentPage().

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.