Sur cette page

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

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

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

Widget de calendrier avec une 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é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.

ConstanteValeurDescription
QCalendarWidget::SingleLetterDayNames1L'en-tête affiche une abréviation d'une seule lettre pour les noms des jours (par exemple, M pour lundi).
QCalendarWidget::ShortDayNames2L'en-tête affiche une abréviation courte des noms de jours (par exemple, « Mon » pour lundi).
QCalendarWidget::LongDayNames3L'en-tête affiche les noms complets des jours (par exemple, lundi).
QCalendarWidget::NoHorizontalHeader0L'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.

ConstanteValeurDescription
QCalendarWidget::NoSelection0Aucune date ne peut être sélectionnée.
QCalendarWidget::SingleSelection1Il 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.

ConstanteValeurDescription
QCalendarWidget::ISOWeekNumbers1L'en-tête affiche les numéros de semaine ISO tels que décrits par la norme QDate::weekNumber().
QCalendarWidget::NoVerticalHeader0L'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.

Widget de calendrier configuré pour ê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 de calendrier affichant les dates non disponibles après la date limite

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

Widget de calendrier affichant les dates non disponibles antérieures à 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 également ` setDateRange()`.

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.