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

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() :
|
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.
| Constante | Valeur | Description de l'en-tête |
|---|---|---|
QCalendarWidget::SingleLetterDayNames | 1 | L'en-tête affiche une abréviation d'une lettre pour les noms de jours (par exemple, M pour lundi). |
QCalendarWidget::ShortDayNames | 2 | L'en-tête affiche une abréviation courte pour les noms de jours (par exemple, Mon pour lundi). |
QCalendarWidget::LongDayNames | 3 | L'en-tête affiche le nom complet des jours (par exemple, lundi). |
QCalendarWidget::NoHorizontalHeader | 0 | L'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.
| Constante | Valeur | Description du type de sélection |
|---|---|---|
QCalendarWidget::NoSelection | 0 | Les dates ne peuvent pas être sélectionnées. |
QCalendarWidget::SingleSelection | 1 | Des 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.
| Constante | Valeur | Description de l'en-tête |
|---|---|---|
QCalendarWidget::ISOWeekNumbers | 1 | L'en-tête affiche les numéros de semaine ISO tels que décrits par QDate::weekNumber(). |
QCalendarWidget::NoVerticalHeader | 0 | L'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.
![]() |
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.
|
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.
|
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().
navigationBarVisible : bool
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.


