QCalendarWidget Class
La classe QCalendarWidget fournit un widget de calendrier mensuel permettant à l'utilisateur de sélectionner une date. En savoir plus...
| En-tête : | #include <QCalendarWidget> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake : | QT += widgets |
| Hérite de : | 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 |
Slots 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

Le widget est initialisé avec le mois et l'année en cours, mais QCalendarWidget fournit plusieurs slots publics permettant de modifier l'année et le mois affichés.
Par défaut, la date du jour est sélectionnée, et l’utilisateur peut choisir une date à l’aide de la souris ou 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 ces deux propriétés en une seule fois à l’aide du slot de commodité setDateRange(). Définissez la propriété selectionMode sur NoSelection pour empêcher totalement l’utilisateur d’effectuer une sélection. Notez qu’une date peut également être sélectionnée par programmation à l’aide du slot 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 les noms abrégés des jours, et les samedis comme les dimanches sont marqués en rouge. La grille du calendrier n’est pas visible. Les numéros de semaine sont affichés, et le jour de la première colonne correspond au premier jour de la semaine selon les paramètres régionaux du calendrier.
La notation des jours peut être remplacée par des abréviations d’une seule lettre (« M » pour « lundi ») en définissant la propriété horizontalHeaderFormat sur QCalendarWidget::SingleLetterDayNames. En définissant cette 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()` :
|
|
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éagir aux interactions de l’utilisateur.
L’affichage des en-têtes, des jours de la semaine ou des jours individuels peut être largement personnalisé en définissant des signaux ` QTextCharFormat` pour un jour de la semaine particulier, une date spécifique ou pour l’affichage des en-têtes.
Seul un sous-ensemble des propriétés de QTextCharFormat est utilisé par le widget de calendrier. Actuellement, les propriétés « foreground », « background » et « font » sont utilisées pour déterminer l’affichage des cellules individuelles du 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.
| Constante | Valeur | Description |
|---|---|---|
QCalendarWidget::SingleLetterDayNames | 1 | L'en-tête affiche une abréviation d'une seule lettre pour les noms des jours (par exemple, M pour lundi). |
QCalendarWidget::ShortDayNames | 2 | L'en-tête affiche une abréviation courte des noms de jours (par exemple, « Mon » pour lundi). |
QCalendarWidget::LongDayNames | 3 | L'en-tête affiche les noms complets des jours (par exemple, lundi). |
QCalendarWidget::NoHorizontalHeader | 0 | L'en-tête est masqué. |
Voir également horizontalHeaderFormat() et VerticalHeaderFormat.
enum QCalendarWidget::SelectionMode
Cette énumération décrit les types de sélection proposés à l'utilisateur pour choisir des dates dans le calendrier.
| Constante | Valeur | Description |
|---|---|---|
QCalendarWidget::NoSelection | 0 | Aucune date ne peut être sélectionnée. |
QCalendarWidget::SingleSelection | 1 | Il est possible de sélectionner des dates individuelles. |
Voir aussi selectionMode.
enum QCalendarWidget::VerticalHeaderFormat
Ce type d'énumération définit les différents formats que l'en-tête vertical peut afficher.
| Constante | Valeur | Description |
|---|---|---|
QCalendarWidget::ISOWeekNumbers | 1 | L'en-tête affiche les numéros de semaine ISO tels que décrits par la norme QDate::weekNumber(). |
QCalendarWidget::NoVerticalHeader | 0 | L'en-tête est masqué. |
Voir également verticalHeaderFormat() et HorizontalHeaderFormat.
Documentation des propriétés
dateEditAcceptDelay : int
Cette propriété définit la durée pendant laquelle un champ de saisie de date inactif reste affiché avant que son contenu ne soit validé
Si le widget de calendrier est configuré avec l'date edit is enabled, cette propriété spécifie la durée (en millisecondes) pendant laquelle le champ de saisie de date reste ouvert après la dernière saisie de l'utilisateur. Une fois ce délai écoulé, la date indiquée dans le champ de saisie est validée et la fenêtre contextuelle se ferme.
Par défaut, ce délai est défini sur 1 500 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 d'édition de date est activée
Si cette propriété est activée, le fait d'appuyer sur une touche non modifiante fera apparaître une fenêtre contextuelle de saisie de date si le widget de calendrier a le focus, permettant à l'utilisateur de spécifier une date au format défini par les paramètres régionaux actuels.
Par défaut, cette propriété est activée.
La fenêtre contextuelle de saisie de date est d’apparence plus simple que QDateEdit, mais permet à l’utilisateur de naviguer entre les champs à l’aide des touches de curseur gauche et droite, d’incrémenter et de décrémenter chaque champ à l’aide des touches de curseur haut et bas, et de saisir directement des valeurs à 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 correspond au premier jour de la semaine selon les paramètres régionaux du calendrier.
Fonctions d'accès :
| Qt::DayOfWeek | firstDayOfWeek() const |
| void | setFirstDayOfWeek(Qt::DayOfWeek dayOfWeek) |
gridVisible : bool
Cette propriété détermine si la grille du tableau est affichée.
![]() |
|
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.
|
|
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()` n’effectue aucune action.
La date maximale par défaut est le 31 décembre 9999. Vous pouvez rétablir cette valeur par défaut en appelant la fonction clearMaximumDate() (depuis Qt 6.6).
Fonctions d’accès :
| QDate | maximumDate() const |
| void | setMaximumDate(QDate date) |
| void | clearMaximumDate() |
Voir également ` setDateRange()`.
minimumDate : QDate
Cette propriété contient 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.
|
|
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 également ` setDateRange()`.
navigationBarVisible : bool
Cette propriété détermine si la barre de navigation est affichée ou non
Lorsque cette propriété est définie sur « true » (valeur par défaut), les commandes « Mois suivant », « Mois précédent », « Sélection du mois » et « Sélection de l'année » s'affichent en haut.
Lorsque la propriété est définie sur « false », ces commandes sont masquées.
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 se situer 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 également 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 la propriété est définie sur « NoSelection », l’utilisateur ne peut pas sélectionner de dates, mais celles-ci peuvent toujours être sélectionnées par programmation. Notez que la date sélectionnée lorsque la propriété est définie sur « NoSelection » reste 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 verticale.
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)
Crée un widget de calendrier à partir de l'parent.
Le widget est initialisé avec le mois et l'année en cours, et la date actuellement sélectionnée est celle d'aujourd'hui.
Voir également setCurrentPage().
[virtual noexcept] QCalendarWidget::~QCalendarWidget()
Supprime le widget calendrier.
[signal] void QCalendarWidget::activated(QDate date)
Ce signal est émis chaque fois que l'utilisateur appuie sur la touche Retour ou Entrée, ou qu'il double-clique sur un « date » dans le widget de calendrier.
QCalendar QCalendarWidget::calendar() const
Indiquez le système de calendrier utilisé par ce widget.
Voir également setCalendar().
[signal] void QCalendarWidget::clicked(QDate date)
Ce signal est émis lorsqu'on clique sur un bouton de la souris. La date sur laquelle on a cliqué 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 plages définies par minimumDate() et maximumDate(). Si le mode de sélection est NoSelection, ce signal ne sera pas émis.
[signal] void QCalendarWidget::currentPageChanged(int year, int month)
Ce signal est émis lorsque le mois actuellement affiché change. Les nouvelles valeurs de « year » et « month » sont transmises en tant que paramètres.
Voir également setCurrentPage().
QMap<QDate, QTextCharFormat> QCalendarWidget::dateTextFormat() const
Renvoie une liste « QMap » (liste des dates) de QDate vers QTextCharFormat, indiquant toutes les dates qui utilisent un format spécial modifiant leur affichage.
Voir aussi setDateTextFormat().
QTextCharFormat QCalendarWidget::dateTextFormat(QDate date) const
Renvoie un objet ` QTextCharFormat ` pour ` date`. Le format `char` peut être vide si la date ne fait pas l'objet d'un rendu particulier.
[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 de chaîne de caractères à utiliser pour l'affichage 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 pour la propriété : QWidget::minimumSizeHint.
int QCalendarWidget::monthShown() const
Renvoie le mois actuellement affiché. Les mois sont numérotés de 1 à 12.
Voir également 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'date, en utilisant les paramètres painter et rect fournis.
[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 actuellement sélectionnée est modifiée.
La date actuellement 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 la fonction setSelectedDate().
Voir également selectedDate().
void QCalendarWidget::setCalendar(QCalendar c)
Définissez « c » comme 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 également calendar().
[slot] void QCalendarWidget::setCurrentPage(int year, int month)
Affiche l'month ion spécifiée de l'year ion indiquée 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 configurant les propriétés « minimumDate » et « maximumDate ».
Cette plage de dates limite la sélection de l’utilisateur, c’est-à-dire que celui-ci ne peut choisir que des dates comprises dans la plage spécifiée. Notez que
QCalendarWidget *calendar;
calendar->setDateRange(min, max);est analogue à
QCalendarWidget *calendar;
calendar->setMinimumDate(min);
calendar->setMaximumDate(max);Si l'un des paramètres min ou max n'est pas un objet QDate valide, cette fonction ne fait rien.
Voir également setMinimumDate() et setMaximumDate().
void QCalendarWidget::setDateTextFormat(QDate date, const QTextCharFormat &format)
Définit le format utilisé pour afficher l'date s fournies selon celui spécifié par format.
Si date est nul, tous les formats de date sont effacés.
Voir également dateTextFormat().
void QCalendarWidget::setHeaderTextFormat(const QTextCharFormat &format)
Définit le format de caractères du texte pour l'affichage de l'en-tête selon format. Si vous définissez également un format de texte pour les jours de la semaine, les couleurs de premier plan et d'arrière-plan de ce format prévaudront sur celles du format de l'en-tête. Les autres informations de mise en forme resteront 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 de caractères pour l'affichage du jour de la semaine dayOfWeek à format. Ce format prévaut sur le format des en-têtes en ce qui concerne les couleurs de premier plan et d'arrière-plan. Les autres informations de mise en forme du texte sont reprises du format des en-têtes.
Voir également 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 de 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 de l'année précédente correspondant à l'année actuellement affichée. 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 correspondant à la date sélectionnée.
Voir également selectedDate() et setCurrentPage().
[slot] void QCalendarWidget::showToday()
Affiche le mois correspondant à la date du jour.
Voir également selectedDate() et setCurrentPage().
[override virtual] QSize QCalendarWidget::sizeHint() const
Réimplémente une fonction d'accès pour la propriété : QWidget::sizeHint.
[protected] void QCalendarWidget::updateCell(QDate date)
Met à jour la cellule spécifiée par l'date fournie, sauf si les mises à jour sont désactivées ou si la cellule est masquée.
Voir également updateCells(), yearShown() et monthShown().
[protected] void QCalendarWidget::updateCells()
Met à jour toutes les cellules visibles, sauf si cette fonctionnalité est désactivée.
Voir également updateCell().
QTextCharFormat QCalendarWidget::weekdayTextFormat(Qt::DayOfWeek dayOfWeek) const
Renvoie le format de chaîne de caractères permettant d'afficher le jour de la semaine dayOfWeek.
Voir également setWeekdayTextFormat() et headerTextFormat().
int QCalendarWidget::yearShown() const
Renvoie l'année du mois actuellement affiché. Les mois sont numérotés de 1 à 12.
Voir également 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.


