Sur cette page

QCalendarWidget Class

La classe QCalendarWidget fournit un widget de calendrier mensuel permettant à l'utilisateur de sélectionner une date. Plus d'informations...

En-tête : #include <QCalendarWidget>
CMake : find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake : QT += widgets
Héritages : QWidget

Types publics

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

Propriétés

Fonctions publiques

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

Fonctions publiques réimplémentées

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

Emplacements publics

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()

Signaux

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

Fonctions protégées

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

Fonctions protégées réimplémentées

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

Description détaillée

Widget de calendrier affichant le mois, l'année et un jour sélectionné

Le widget est initialisé avec le mois et l'année en cours, mais QCalendarWidget fournit plusieurs slots publics pour changer l'année et le mois affichés.

Par défaut, la date du jour est sélectionnée, et l'utilisateur peut sélectionner une date à l'aide de la souris et du clavier. La date actuellement sélectionnée peut être récupérée à l'aide de la fonction selectedDate(). Il est possible de limiter la sélection de l'utilisateur à une plage de dates donnée en définissant les propriétés minimumDate et maximumDate. Il est également possible de définir les deux propriétés en une seule fois à l'aide de l'emplacement de commodité setDateRange(). Définissez la propriété selectionMode à NoSelection pour interdire à l'utilisateur toute sélection. Notez qu'une date peut également être sélectionnée par programme à l'aide de l'emplacement setSelectedDate().

Le mois et l'année actuellement affichés peuvent être récupérés à l'aide des fonctions monthShown() et yearShown(), respectivement.

Un widget de calendrier nouvellement créé utilise des noms de jours abrégés, et les samedis et dimanches sont marqués en rouge. La grille du calendrier n'est pas visible. Les numéros de semaine sont affichés et le premier jour de la colonne est le premier jour de la semaine pour la région du calendrier.

La notation des jours peut être remplacée par une abréviation d'une seule lettre ("M" pour "lundi") en définissant la propriété horizontalHeaderFormat sur QCalendarWidget::SingleLetterDayNames. En définissant la même propriété sur QCalendarWidget::LongDayNames, l'en-tête affiche les noms complets des jours. Les numéros de semaine peuvent être supprimés en définissant la propriété verticalHeaderFormat sur QCalendarWidget::NoVerticalHeader. La grille du calendrier peut être activée en définissant la propriété gridVisible sur true à l'aide de la fonction setGridVisible() :

Widget calendrier avec grille visible

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

Enfin, le jour de la première colonne peut être modifié à l'aide de la fonction setFirstDayOfWeek().

La classe QCalendarWidget fournit également trois signaux, selectionChanged(), activated() et currentPageChanged(), qui permettent de répondre à l'interaction de l'utilisateur.

Le rendu des en-têtes, des jours de la semaine ou des jours individuels peut être largement personnalisé en définissant QTextCharFormat pour un jour de la semaine particulier, une date particulière ou pour le rendu des en-têtes.

Seul un sous-ensemble des propriétés de QTextCharFormat est utilisé par le widget du calendrier. Actuellement, les propriétés foreground, background et font sont utilisées pour déterminer le rendu des cellules individuelles dans le widget.

Voir également QDate, QDateEdit, et QTextCharFormat.

Documentation sur les types de membres

enum QCalendarWidget::HorizontalHeaderFormat

Ce type d'énumération définit les différents formats que l'en-tête horizontal peut afficher.

ConstanteValeurDescription de l'en-tête
QCalendarWidget::SingleLetterDayNames1L'en-tête affiche une abréviation d'une lettre pour les noms de jours (par exemple, M pour lundi).
QCalendarWidget::ShortDayNames2L'en-tête affiche une abréviation courte pour les noms de jours (par exemple, Mon pour lundi).
QCalendarWidget::LongDayNames3L'en-tête affiche le nom complet des jours (par exemple, lundi).
QCalendarWidget::NoHorizontalHeader0L'en-tête est caché.

Voir aussi horizontalHeaderFormat() et VerticalHeaderFormat.

enum QCalendarWidget::SelectionMode

Cette énumération décrit les types de sélection proposés à l'utilisateur pour sélectionner des dates dans le calendrier.

ConstanteValeurDescription du type de sélection
QCalendarWidget::NoSelection0Les dates ne peuvent pas être sélectionnées.
QCalendarWidget::SingleSelection1Des dates individuelles peuvent être sélectionnées.

Voir également selectionMode.

enum QCalendarWidget::VerticalHeaderFormat

Ce type d'énumération définit les différents formats que l'en-tête vertical peut afficher.

ConstanteValeurDescription de l'en-tête
QCalendarWidget::ISOWeekNumbers1L'en-tête affiche les numéros de semaine ISO tels que décrits par QDate::weekNumber().
QCalendarWidget::NoVerticalHeader0L'en-tête est caché.

Voir également verticalHeaderFormat() et HorizontalHeaderFormat.

Propriété Documentation

dateEditAcceptDelay : int

Cette propriété indique la durée d'affichage d'une modification de date inactive avant que son contenu ne soit accepté

Si le widget calendrier est date edit is enabled, cette propriété indique la durée (en millisecondes) pendant laquelle l'édition de la date reste ouverte après la dernière saisie de l'utilisateur. Une fois ce délai écoulé, la date spécifiée dans l'édition de la date est acceptée et la fenêtre contextuelle est fermée.

Par défaut, le délai est défini à 1500 millisecondes (1,5 seconde).

Fonctions d'accès :

int dateEditAcceptDelay() const
void setDateEditAcceptDelay(int delay)

dateEditEnabled : bool

Cette propriété indique si la fenêtre contextuelle de modification de la date est activée

Si cette propriété est activée, le fait d'appuyer sur une touche non modificatrice provoque l'apparition d'une fenêtre d'édition de la date si le widget de calendrier est au premier plan, ce qui permet à l'utilisateur de spécifier une date sous la forme spécifiée par la langue locale actuelle.

Par défaut, cette propriété est activée.

L'édition de la date est plus simple que QDateEdit, mais permet à l'utilisateur de naviguer entre les champs à l'aide des touches gauche et droite du curseur, d'incrémenter et de décrémenter les champs individuels à l'aide des touches haut et bas du curseur et d'entrer des valeurs directement à l'aide des touches numériques.

Fonctions d'accès :

bool isDateEditEnabled() const
void setDateEditEnabled(bool enable)

Voir également QCalendarWidget::dateEditAcceptDelay.

firstDayOfWeek : Qt::DayOfWeek

Cette propriété contient une valeur identifiant le jour affiché dans la première colonne.

Par défaut, le jour affiché dans la première colonne est le premier jour de la semaine pour la locale du calendrier.

Fonctions d'accès :

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

gridVisible : bool

Cette propriété indique si la grille du tableau est affichée.

Le widget calendrier doit être visible
QCalendarWidget *calendar;
calendar->setGridVisible(true);

La valeur par défaut est false.

Fonctions d'accès :

bool isGridVisible() const
void setGridVisible(bool show)

horizontalHeaderFormat : HorizontalHeaderFormat

Cette propriété définit le format de l'en-tête horizontal.

La valeur par défaut est QCalendarWidget::ShortDayNames.

Fonctions d'accès :

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

maximumDate : QDate

Cette propriété contient la date maximale de la plage de dates actuellement spécifiée.

L'utilisateur ne pourra pas sélectionner une date postérieure à la date maximale actuellement définie.

Widget calendrier avec les dates désactivées après la date maximale

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

Lors de la définition d'une date maximale, les propriétés minimumDate et selectedDate sont ajustées si la plage de sélection devient invalide. Si la date fournie n'est pas un objet QDate valide, la fonction setMaximumDate() ne fait rien.

La date maximale par défaut est le 31 décembre 9999 CE. Vous pouvez rétablir cette valeur par défaut en appelant clearMaximumDate() (depuis Qt 6.6).

Fonctions d'accès :

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

Voir aussi setDateRange().

minimumDate : QDate

Cette propriété indique la date minimale de la plage de dates actuellement spécifiée.

L'utilisateur ne pourra pas sélectionner une date antérieure à la date minimale actuellement définie.

Widget calendrier avec les dates désactivées avant la date minimale

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

Lors de la définition d'une date minimale, les propriétés maximumDate et selectedDate sont ajustées si la plage de sélection devient invalide. Si la date fournie n'est pas un objet QDate valide, la fonction setMinimumDate() ne fait rien.

La date minimale par défaut est le 25 novembre 4714 avant notre ère. Vous pouvez rétablir cette valeur par défaut en appelant clearMinimumDate() (depuis Qt 6.6).

Fonctions d'accès :

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

Voir aussi setDateRange().

Cette propriété indique si la barre de navigation est affichée ou non

Lorsque cette propriété vaut true (par défaut), les contrôles mois suivant, mois précédent, sélection du mois, sélection de l'année sont affichés en haut.

Lorsque cette propriété vaut false, ces contrôles sont cachés.

Fonctions d'accès :

bool isNavigationBarVisible() const
void setNavigationBarVisible(bool visible)

selectedDate : QDate

Cette propriété contient la date actuellement sélectionnée.

La date sélectionnée doit être comprise dans la plage de dates spécifiée par les propriétés minimumDate et maximumDate. Par défaut, la date sélectionnée est la date du jour.

Fonctions d'accès :

QDate selectedDate() const
void setSelectedDate(QDate date)

Voir aussi setDateRange().

selectionMode : SelectionMode

Cette propriété définit le type de sélection que l'utilisateur peut effectuer dans le calendrier

Lorsque cette propriété est définie sur SingleSelection, l'utilisateur peut sélectionner une date comprise entre les dates minimale et maximale autorisées, à l'aide de la souris ou du clavier.

Lorsque cette propriété a la valeur NoSelection, l'utilisateur ne peut pas sélectionner de dates, mais celles-ci peuvent toujours être sélectionnées par programme. Notez que la date sélectionnée lorsque la propriété est définie sur NoSelection sera toujours la date sélectionnée dans le calendrier.

La valeur par défaut est SingleSelection.

Fonctions d'accès :

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

verticalHeaderFormat : VerticalHeaderFormat

Cette propriété définit le format de l'en-tête vertical.

La valeur par défaut est QCalendarWidget::ISOWeekNumber.

Fonctions d'accès :

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

Documentation des fonctions membres

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

Construit un widget calendrier avec l'adresse parent.

Le widget est initialisé avec le mois et l'année en cours, et la date sélectionnée est aujourd'hui.

Voir aussi setCurrentPage().

[virtual noexcept] QCalendarWidget::~QCalendarWidget()

Détruit le widget du calendrier.

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

Ce signal est émis lorsque l'utilisateur appuie sur la touche Retour ou Entrée ou double-clique sur date dans le widget du calendrier.

QCalendar QCalendarWidget::calendar() const

Indique le système de calendrier utilisé par ce widget.

Voir aussi setCalendar().

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

Ce signal est émis lorsqu'un bouton de la souris est cliqué. La date à laquelle la souris a été cliquée est spécifiée par date. Le signal n'est émis que si l'on clique sur une date valide, c'est-à-dire si les dates ne se situent pas en dehors des zones minimumDate() et maximumDate(). Si le mode de sélection est NoSelection, ce signal n'est pas émis.

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

Ce signal est émis lorsque le mois affiché est modifié. Les nouveaux year et month sont transmis en tant que paramètres.

Voir aussi setCurrentPage().

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

Retourne un QMap de QDate à QTextCharFormat montrant toutes les dates qui utilisent un format spécial qui modifie leur rendu.

Voir aussi setDateTextFormat().

QTextCharFormat QCalendarWidget::dateTextFormat(QDate date) const

Renvoie une adresse QTextCharFormat pour date. Le format char peut être vide si la date n'est pas rendue spécialement.

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

Réimplémente : QWidget::event(QEvent *event).

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

Réimplémente : QObject::eventFilter(QObject *watched, QEvent *event).

QTextCharFormat QCalendarWidget::headerTextFormat() const

Renvoie le format texte char pour le rendu de l'en-tête.

Voir aussi setHeaderTextFormat().

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

Réimplémente : QWidget::keyPressEvent(QKeyEvent *event).

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

Réimplémente une fonction d'accès à la propriété : QWidget::minimumSizeHint.

int QCalendarWidget::monthShown() const

Renvoie le mois actuellement affiché. Les mois sont numérotés de 1 à 12.

Voir aussi yearShown() et setCurrentPage().

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

Réimplémente : QWidget::mousePressEvent(QMouseEvent *event).

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

Peint la cellule spécifiée par l'adresse date, en utilisant les adresses painter et rect.

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

Réimplémente : QWidget::resizeEvent(QResizeEvent *event).

[signal] void QCalendarWidget::selectionChanged()

Ce signal est émis lorsque la date sélectionnée est modifiée.

La date sélectionnée peut être modifiée par l'utilisateur à l'aide de la souris ou du clavier, ou par le programmeur à l'aide de setSelectedDate().

Voir également selectedDate().

void QCalendarWidget::setCalendar(QCalendar c)

Définit c comme le système de calendrier à utiliser par ce widget.

Le widget peut utiliser n'importe quel système de calendrier pris en charge. Par défaut, il utilise le calendrier grégorien.

Voir aussi calendar().

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

Affiche l'adresse month de l'adresse year sans modifier la date sélectionnée. Utilisez la fonction setSelectedDate() pour modifier la date sélectionnée.

Le mois et l'année actuellement affichés peuvent être récupérés à l'aide des fonctions monthShown() et yearShown() respectivement.

Voir également yearShown(), monthShown(), showPreviousMonth(), showNextMonth(), showPreviousYear() et showNextYear().

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

Définit une plage de dates en définissant les propriétés minimumDate et maximumDate.

La plage de dates restreint la sélection de l'utilisateur, c'est-à-dire que l'utilisateur ne peut sélectionner que des dates comprises dans la plage de dates spécifiée. Notez que

QCalendarWidget *calendar;

calendar->setDateRange(min, max);

est analogue à

QCalendarWidget *calendar;

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

Si les paramètres min ou max ne sont pas des objets QDate valides, cette fonction ne fait rien.

Voir également setMinimumDate() et setMaximumDate().

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

Définit le format utilisé pour le rendu de la date donnée date à celui spécifié par format.

Si date est nul, tous les formats de date sont effacés.

Voir aussi dateTextFormat().

void QCalendarWidget::setHeaderTextFormat(const QTextCharFormat &format)

Définit le format de texte pour le rendu de l'en-tête à format. Si vous définissez également un format de texte pour le jour de la semaine, les couleurs d'avant-plan et d'arrière-plan de ce format auront la priorité sur le format de l'en-tête. Les autres informations de formatage seront toujours déterminées par le format de l'en-tête.

Voir aussi headerTextFormat().

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

Définit le format des caractères de texte pour le rendu du jour de la semaine dayOfWeek à format. Le format aura la priorité sur le format de l'en-tête en ce qui concerne la couleur d'avant-plan et d'arrière-plan. Les autres informations de formatage du texte sont tirées du format des en-têtes.

Voir aussi weekdayTextFormat() et setHeaderTextFormat().

[slot] void QCalendarWidget::showNextMonth()

Affiche le mois suivant par rapport au mois actuellement affiché. Notez que la date sélectionnée n'est pas modifiée.

Voir également showPreviousMonth(), setCurrentPage() et setSelectedDate().

[slot] void QCalendarWidget::showNextYear()

Affiche le mois actuellement affiché dans l'année suivante par rapport à l'année actuellement affichée. Notez que la date sélectionnée n'est pas modifiée.

Voir également showPreviousYear(), setCurrentPage() et setSelectedDate().

[slot] void QCalendarWidget::showPreviousMonth()

Affiche le mois précédent par rapport au mois actuellement affiché. Notez que la date sélectionnée n'est pas modifiée.

Voir également showNextMonth(), setCurrentPage() et setSelectedDate().

[slot] void QCalendarWidget::showPreviousYear()

Affiche le mois en cours dans l'année précédente par rapport à l'année en cours. Notez que la date sélectionnée n'est pas modifiée.

Voir également showNextYear(), setCurrentPage() et setSelectedDate().

[slot] void QCalendarWidget::showSelectedDate()

Affiche le mois de la date sélectionnée.

Voir aussi selectedDate() et setCurrentPage().

[slot] void QCalendarWidget::showToday()

Affiche le mois de la date du jour.

Voir aussi selectedDate() et setCurrentPage().

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

Réimplémente une fonction d'accès à la propriété : QWidget::sizeHint.

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

Met à jour la cellule spécifiée par l'adresse date, sauf si les mises à jour sont désactivées ou si la cellule est cachée.

Voir aussi updateCells(), yearShown() et monthShown().

[protected] void QCalendarWidget::updateCells()

Met à jour toutes les cellules visibles, sauf si les mises à jour sont désactivées.

Voir également updateCell().

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

Renvoie le format texte char pour le rendu du jour de la semaine dayOfWeek.

Voir aussi setWeekdayTextFormat() et headerTextFormat().

int QCalendarWidget::yearShown() const

Renvoie l'année du mois affiché. Les mois sont numérotés de 1 à 12.

Voir aussi monthShown() et 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.