Sur cette page

QMessageBox Class

La classe QMessageBox permet d'afficher une boîte de dialogue modale destinée à informer l'utilisateur ou à lui poser une question et à recueillir sa réponse. En savoir plus...

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

Types publics

enum ButtonRole { InvalidRole, AcceptRole, RejectRole, DestructiveRole, ActionRole, …, ResetRole }
enum Icon { NoIcon, Question, Information, Warning, Critical }
(since 6.6) enum class Option { DontUseNativeDialog }
flags Options
enum StandardButton { Ok, Open, Save, Cancel, Close, …, ButtonMask }
flags StandardButtons

Propriétés

Fonctions publiques

QMessageBox(QWidget *parent = nullptr)
QMessageBox(QMessageBox::Icon icon, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = NoButton, QWidget *parent = nullptr, Qt::WindowFlags f = Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint)
virtual ~QMessageBox()
void addButton(QAbstractButton *button, QMessageBox::ButtonRole role)
QPushButton *addButton(QMessageBox::StandardButton button)
QPushButton *addButton(const QString &text, QMessageBox::ButtonRole role)
QAbstractButton *button(QMessageBox::StandardButton which) const
QMessageBox::ButtonRole buttonRole(QAbstractButton *button) const
QList<QAbstractButton *> buttons() const
QCheckBox *checkBox() const
QAbstractButton *clickedButton() const
QPushButton *defaultButton() const
QString detailedText() const
QAbstractButton *escapeButton() const
QMessageBox::Icon icon() const
QPixmap iconPixmap() const
QString informativeText() const
void open(QObject *receiver, const char *member)
QMessageBox::Options options() const
void removeButton(QAbstractButton *button)
void setCheckBox(QCheckBox *cb)
void setDefaultButton(QMessageBox::StandardButton button)
void setDefaultButton(QPushButton *button)
void setDetailedText(const QString &text)
void setEscapeButton(QAbstractButton *button)
void setEscapeButton(QMessageBox::StandardButton button)
void setIcon(QMessageBox::Icon)
void setIconPixmap(const QPixmap &pixmap)
void setInformativeText(const QString &text)
(since 6.6) void setOption(QMessageBox::Option option, bool on = true)
void setOptions(QMessageBox::Options options)
void setStandardButtons(QMessageBox::StandardButtons buttons)
void setText(const QString &text)
void setTextFormat(Qt::TextFormat format)
void setTextInteractionFlags(Qt::TextInteractionFlags flags)
void setWindowModality(Qt::WindowModality windowModality)
void setWindowTitle(const QString &title)
QMessageBox::StandardButton standardButton(QAbstractButton *button) const
QMessageBox::StandardButtons standardButtons() const
(since 6.6) bool testOption(QMessageBox::Option option) const
QString text() const
Qt::TextFormat textFormat() const
Qt::TextInteractionFlags textInteractionFlags() const

Emplacements publics

virtual int exec() override

Signaux

void buttonClicked(QAbstractButton *button)

Membres publics statiques

void about(QWidget *parent, const QString &title, const QString &text)
void aboutQt(QWidget *parent, const QString &title = QString())
QMessageBox::StandardButton critical(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = Ok, QMessageBox::StandardButton defaultButton = NoButton)
QMessageBox::StandardButton information(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = Ok, QMessageBox::StandardButton defaultButton = NoButton)
QMessageBox::StandardButton question(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = StandardButtons(Yes | No), QMessageBox::StandardButton defaultButton = NoButton)
QMessageBox::StandardButton warning(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = Ok, QMessageBox::StandardButton defaultButton = NoButton)

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

virtual void changeEvent(QEvent *ev) override
virtual void closeEvent(QCloseEvent *e) override
virtual bool event(QEvent *e) override
virtual void keyPressEvent(QKeyEvent *e) override
virtual void resizeEvent(QResizeEvent *event) override
virtual void showEvent(QShowEvent *e) override

Macros

QT_REQUIRE_VERSION(int argc, char **argv, const char *version)

Description détaillée

Une boîte de message affiche une « primary text » ( principale) pour alerter l’utilisateur d’une situation, une « informative text » ( ) pour expliquer plus en détail la situation, ainsi qu’une « optional detailed text » ( facultative) pour fournir encore plus d’informations si l’utilisateur le demande.

Une boîte de message peut également afficher une « icon » et une « standard buttons » pour accepter une réponse de l'utilisateur.

Bien que le paramètre parent soit facultatif, le spécifier fournit une indication au gestionnaire de fenêtres, qui peut alors se charger du positionnement et maintenir un ordre d’empilement correct de la fenêtre de dialogue.

Deux interfaces de programmation (API) permettent d’utiliser QMessageBox : l’API basée sur les propriétés et les fonctions statiques. L’appel d’une des fonctions statiques constitue l’approche la plus simple, mais elle est moins flexible que l’utilisation de l’API basée sur les propriétés, et le résultat est moins informatif. L’utilisation de l’API basée sur les propriétés est recommandée.

L’API basée sur les propriétés

Pour utiliser l’API basée sur les propriétés, créez une instance de QMessageBox, définissez les propriétés souhaitées, puis appelez ` exec()` pour afficher le message. La configuration la plus simple consiste à définir uniquement la propriété ` message text `.

QMessageBox msgBox(this);
msgBox.setText("The document has been modified.");
msgBox.exec();

L’utilisateur doit cliquer sur le bouton « OK » pour fermer la boîte de message. Le reste de l’interface graphique est bloqué jusqu’à ce que la boîte de message soit fermée.

Fenêtre de message contenant un message simple et un bouton « OK »

Une meilleure approche que de simplement alerter l’utilisateur d’un événement consiste à lui demander également quelle action entreprendre.

Définissez la propriété ` standard buttons ` sur l’ensemble de boutons que vous souhaitez proposer comme réponses à l’utilisateur. Les boutons sont spécifiés en combinant les valeurs de ` StandardButtons ` à l’aide de l’opérateur OR bit à bit. L’ordre d’affichage des boutons dépend de la plateforme. Par exemple, sous Windows, « Save » s’affiche à gauche de « Cancel », tandis que sous macOS, l’ordre est inversé. Marquez l’un de vos boutons standard pour qu’il serve de « default button ».

La propriété informative text peut être utilisée pour ajouter des informations contextuelles supplémentaires afin d’aider l’utilisateur à choisir l’action appropriée.

QMessageBox msgBox(this);
msgBox.setText("The document has been modified.");
msgBox.setInformativeText("Do you want to save your changes?");
msgBox.setStandardButtons(QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel);
msgBox.setDefaultButton(QMessageBox::Save);
int ret = msgBox.exec();

Fenêtre de message comportant les boutons « Enregistrer », « Ne pas enregistrer » et « Annuler »

Le slot exec() renvoie la valeur « StandardButtons » du bouton sur lequel l’utilisateur a cliqué.

switch (ret) {
    case QMessageBox::Save:
        // Save was clicked
        break;
    case QMessageBox::Discard:
        // Don't Save was clicked
        break;
    case QMessageBox::Cancel:
        // Cancel was clicked
        break;
    default:
        // should never be reached
        break;
}

Pour fournir à l'utilisateur davantage d'informations afin de l'aider à choisir l'action appropriée, définissez la propriété detailed text. Selon la plateforme, l'detailed text peut nécessiter que l'utilisateur clique sur un bouton « Show Details... » pour s'afficher.

Boîte de dialogue « Enregistrer » avec un bouton « Afficher les détails... »

Cliquer sur le bouton « Show Details... » affiche le texte détaillé.

Fenêtre de message « Enregistrer » affichant le texte détaillé

Texte enrichi et propriété « Text Format »

La propriété ` detailed text ` est toujours interprétée comme du texte brut. Les propriétés ` main text ` et ` informative text ` peuvent être soit du texte brut, soit du texte enrichi. Ces chaînes sont interprétées en fonction du paramètre de la propriété ` text format `. Le paramètre par défaut est ` auto-text`.

Notez que pour certaines chaînes de texte brut contenant des méta-caractères XML, l’ rich text detection test ation automatique du texte peut échouer, ce qui entraîne une interprétation erronée de votre chaîne de texte brut en tant que texte enrichi. Dans ces rares cas, utilisez Qt::convertFromPlainText() pour convertir votre chaîne de texte brut en une chaîne de texte enrichi visuellement équivalente, ou définissez explicitement la propriété text format à l’aide de setTextFormat().

Niveaux de gravité et propriétés Icon et Pixmap

QMessageBox prend en charge quatre niveaux de gravité prédéfinis, ou types de messages, qui ne diffèrent en réalité que par l’icône prédéfinie qu’ils affichent. Spécifiez l’un des quatre types de messages prédéfinis en définissant la propriété icon sur l’une des valeurs de predefined icons. Les règles suivantes sont données à titre indicatif :

Icône en forme de point d'interrogation

QuestionPour poser une question lors d’opérations normales.

Icône d'information

InformationPour fournir des informations sur le fonctionnement normal.

Icône d'avertissement

WarningPour signaler des erreurs non critiques.

Icône « Problème critique »

CriticalPour signaler des erreurs critiques.

Predefined icons ne sont pas définies par QMessageBox, mais fournies par le style. La valeur par défaut est No Icon. Les boîtes de message sont par ailleurs identiques dans tous les cas. Lorsque vous utilisez une icône standard, utilisez celle recommandée dans le tableau ou celle recommandée par les directives de style de votre plateforme. Si aucune des icônes standard ne convient à votre boîte de message, vous pouvez utiliser une icône personnalisée en définissant la propriété icon pixmap au lieu de définir la propriété icon.

En résumé, pour définir une icône, utilisez soit ` setIcon()` pour l’une des icônes standard, soit ` setIconPixmap()` pour une icône personnalisée.

L'API des fonctions statiques

La création de boîtes de message à l’aide de l’API des fonctions statiques, bien que pratique, est moins flexible que l’utilisation de l’API basée sur les propriétés, car les signatures des fonctions statiques ne disposent pas de paramètres permettant de définir les propriétés informative text et detailed text. Une solution de contournement consiste à utiliser le paramètre title comme texte principal de la boîte de message et le paramètre text comme texte d’information de la boîte de message. Comme cette méthode présente l’inconvénient évident de rendre la boîte de message moins lisible, les directives des plateformes ne la recommandent pas. Les directives d’interface utilisateur de Microsoft Windows recommandent d’utiliser le paramètre application name comme texte principal ( window's title), ce qui signifie que si vous disposez d’un texte d’information en plus de votre texte principal, vous devez le concaténer au paramètre text.

Notez que les signatures des fonctions statiques ont changé en ce qui concerne leurs paramètres de bouton, qui servent désormais à définir standard buttons et default button.

Des fonctions statiques sont disponibles pour créer des boîtes de message information(), question(), warning() et critical().

int ret = QMessageBox::warning(this, tr("My Application"),
                               tr("The document has been modified.\n"
                                  "Do you want to save your changes?"),
                               QMessageBox::Save | QMessageBox::Discard
                               | QMessageBox::Cancel,
                               QMessageBox::Save);

L'exemple « Standard Dialogs » montre comment utiliser QMessageBox et les autres boîtes de dialogue intégrées à Qt.

Utilisation avancée

Si les fonctions standard buttons ne sont pas suffisamment flexibles pour votre boîte de message, vous pouvez utiliser la surcharge addButton() qui prend un texte et un ButtonRole pour ajouter des boutons personnalisés. La fonction ButtonRole est utilisée par QMessageBox pour déterminer l’ordre d’affichage des boutons à l’écran (qui varie selon la plate-forme). Vous pouvez tester la valeur de clickedButton() après avoir appelé exec(). Par exemple,

QMessageBox msgBox(this);
QPushButton *connectButton = msgBox.addButton(tr("Connect"), QMessageBox::ActionRole);
QPushButton *abortButton = msgBox.addButton(QMessageBox::Abort);

msgBox.exec();

if (msgBox.clickedButton() == connectButton) {
    // connect
} else if (msgBox.clickedButton() == abortButton) {
    // abort
}

Touches par défaut et touche Échap

Le bouton par défaut (c’est-à-dire le bouton activé lorsque l’on appuie sur la touche « Enter ») peut être spécifié à l’aide de la fonction ` setDefaultButton()`. Si aucun bouton par défaut n’est spécifié, QMessageBox tente d’en trouver un en fonction de l’ button roles ion des boutons utilisés dans la boîte de message.

Le bouton « Échap » (le bouton activé lorsque l'on appuie sur la touche « Esc ») peut être spécifié à l'aide de la fonction ` setEscapeButton()`. Si aucun bouton « Échap » n'est spécifié, `QMessageBox` tente d'en trouver un en suivant les règles suivantes :

  1. S'il n'y a qu'un seul bouton, il s'agit du bouton activé lorsque l'on appuie sur la touche « Esc ».
  2. S’il y a un bouton « Cancel », c’est le bouton activé lorsque l’on appuie sur Esc.
  3. S’il n’y a qu’un seul bouton comportant soit l’ the Reject role, soit l’ the No role, c’est le bouton activé lorsque l’on appuie sur Esc.

Lorsqu’aucun bouton d’échappement ne peut être déterminé à l’aide de ces règles, le fait d’appuyer sur Esc n’a aucun effet.

Voir également QDialogButtonBox et Exemple de boîtes de dialogue standard.

Documentation sur les types de membres

enum QMessageBox::ButtonRole

Cette énumération décrit les rôles pouvant être utilisés pour définir les boutons de la boîte à boutons. Les combinaisons de ces rôles servent d'indicateurs permettant de décrire différents aspects de leur comportement.

ConstanteValeurDescription
QMessageBox::InvalidRole-1Le bouton n'est pas valide.
QMessageBox::AcceptRole0Cliquer sur le bouton entraîne l'acceptation de la boîte de dialogue (par exemple, OK).
QMessageBox::RejectRole1Cliquer sur ce bouton entraîne le rejet de la boîte de dialogue (par exemple, « Annuler »).
QMessageBox::DestructiveRole2Cliquer sur ce bouton entraîne une modification irréversible (par exemple, pour « Annuler les modifications ») et ferme la boîte de dialogue.
QMessageBox::ActionRole3Cliquer sur ce bouton modifie les éléments contenus dans la boîte de dialogue.
QMessageBox::HelpRole4On peut cliquer sur ce bouton pour demander de l'aide.
QMessageBox::YesRole5Ce bouton correspond à un bouton de type « Oui ».
QMessageBox::NoRole6Ce bouton correspond à un « Non ».
QMessageBox::ApplyRole8Ce bouton applique les modifications en cours.
QMessageBox::ResetRole7Ce bouton réinitialise les champs de la boîte de dialogue à leurs valeurs par défaut.

Voir également StandardButton.

enum QMessageBox::Icon

Cette énumération comporte les valeurs suivantes :

ConstanteValeurDescription
QMessageBox::NoIcon0la boîte de message ne comporte aucune icône.
QMessageBox::Question4Une icône indiquant que le message pose une question.
QMessageBox::Information1une icône indiquant que le message n'a rien d'inhabituel.
QMessageBox::Warning2Une icône indiquant que le message est un avertissement, mais qu’il est possible d’y remédier.
QMessageBox::Critical3une icône indiquant que le message signale un problème critique.

[since 6.6] enum class QMessageBox::Option
flags QMessageBox::Options

ConstanteValeurDescription
QMessageBox::Option::DontUseNativeDialog0x00000001Ne pas utiliser la boîte de dialogue de message native.

Cette énumération a été introduite dans Qt 6.6.

Le type Options est un typedef pour QFlags<Option>. Il stocke une combinaison OU de valeurs Option.

enum QMessageBox::StandardButton
flags QMessageBox::StandardButtons

Ces énumérations décrivent les indicateurs associés aux boutons standard. Chaque bouton dispose d'une ButtonRole définie.

ConstanteValeurDescription
QMessageBox::Ok0x00000400Un bouton « OK » défini avec l'AcceptRole.
QMessageBox::Open0x00002000Un bouton « Ouvrir » défini avec l'AcceptRole.
QMessageBox::Save0x00000800Un bouton « Enregistrer » défini avec l’ AcceptRole.
QMessageBox::Cancel0x00400000Un bouton « Annuler » défini à l'aide de la méthode RejectRole.
QMessageBox::Close0x00200000Un bouton « Fermer » défini à l'aide de l'RejectRole.
QMessageBox::Discard0x00800000Un bouton « Ignorer » ou « Ne pas enregistrer », selon la plateforme, défini à l’aide de l’ DestructiveRole.
QMessageBox::Apply0x02000000Un bouton « Appliquer » défini à l’aide de la méthode ` ApplyRole`.
QMessageBox::Reset0x04000000Un bouton « Réinitialiser » défini à l’aide de la balise ResetRole.
QMessageBox::RestoreDefaults0x08000000Un bouton « Restaurer les valeurs par défaut » défini à l’aide de la balise ResetRole.
QMessageBox::Help0x01000000Un bouton « Aide » défini à l’aide de l’ HelpRole.
QMessageBox::SaveAll0x00001000Un bouton « Tout enregistrer » défini à l’aide de l’ AcceptRole.
QMessageBox::Yes0x00004000Un bouton « Oui » défini à l'aide de l'YesRole.
QMessageBox::YesToAll0x00008000Un bouton « Oui à tout » défini avec l'YesRole.
QMessageBox::No0x00010000Un bouton « Non » défini avec l'NoRole.
QMessageBox::NoToAll0x00020000Un bouton « Non à tout » défini avec l'NoRole.
QMessageBox::Abort0x00040000Un bouton « Abandonner » défini avec l'RejectRole.
QMessageBox::Retry0x00080000Un bouton « Réessayer » défini à l'aide de l'AcceptRole.
QMessageBox::Ignore0x00100000Un bouton « Ignorer » défini avec l'AcceptRole.
QMessageBox::NoButton0x00000000Un bouton non valide.

Les valeurs suivantes sont obsolètes :

ConstanteValeurDescription
QMessageBox::YesAllYesToAllUtilisez plutôt YesToAll.
QMessageBox::NoAllNoToAllUtilisez plutôt NoToAll.
QMessageBox::Default0x00000100Utilisez plutôt l'argument ` defaultButton ` des fonctions ` information()`, ` warning()` et autres, ou appelez la fonction ` setDefaultButton()`.
QMessageBox::Escape0x00000200Appelez plutôt la fonction setEscapeButton().
QMessageBox::FlagMask0x00000300 
QMessageBox::ButtonMask~FlagMask 

Le type StandardButtons est un typedef pour QFlags<StandardButton>. Il stocke une combinaison OR de valeurs StandardButton.

Voir également ButtonRole et standardButtons.

Documentation sur les propriétés

detailedText : QString

Cette propriété contient le texte à afficher dans la zone de détails.

Le texte sera interprété comme du texte brut.

Par défaut, cette propriété contient une chaîne vide.

Fonctions d'accès :

QString detailedText() const
void setDetailedText(const QString &text)

Voir également QMessageBox::text et QMessageBox::informativeText.

icon : Icon

Cette propriété définit l'icône de la boîte de message

L'icône de la boîte de message peut être spécifiée à l'aide de l'une des valeurs suivantes :

La valeur par défaut est QMessageBox::NoIcon.

L'image bitmap utilisée pour afficher l'icône dépend de la propriété « GUI style » ( ) en cours. Vous pouvez également définir une image bitmap personnalisée pour l'icône en configurant la propriété « icon pixmap » ( ).

Fonctions d'accès :

QMessageBox::Icon icon() const
void setIcon(QMessageBox::Icon)

Voir également iconPixmap.

iconPixmap : QPixmap

Cette propriété contient l'icône actuelle

L'icône actuellement utilisée par la boîte de message. Notez qu'il est souvent difficile de créer une image qui s'adapte à tous les styles d'interface graphique ; vous pouvez donc fournir une image différente pour chaque plateforme.

Par défaut, cette propriété n'est pas définie.

Fonctions d'accès :

QPixmap iconPixmap() const
void setIconPixmap(const QPixmap &pixmap)

Voir également icon.

informativeText : QString

Cette propriété contient le texte explicatif qui fournit une description plus détaillée du message

Le texte explicatif peut être utilisé pour compléter l'text() afin de fournir davantage d'informations à l'utilisateur, par exemple en décrivant les conséquences de la situation ou en proposant des solutions alternatives.

Le texte sera interprété soit comme du texte brut, soit comme du texte enrichi, selon le paramètre de format du texte (QMessageBox::textFormat). Le paramètre par défaut est « Qt::AutoText », c'est-à-dire que la boîte de message tentera de détecter automatiquement le format du texte.

Par défaut, cette propriété contient une chaîne vide.

Fonctions d’accès :

QString informativeText() const
void setInformativeText(const QString &text)

Voir également textFormat, QMessageBox::text et QMessageBox::detailedText.

[since 6.6] options : Options

Options qui influent sur l'apparence et le comportement de la boîte de dialogue.

Par défaut, ces options sont désactivées.

L'option « Option::DontUseNativeDialog » doit être activée avant de modifier les propriétés de la boîte de dialogue ou de l'afficher.

La définition d’options alors que la boîte de dialogue est visible ne garantit pas un effet immédiat sur celle-ci.

La définition d'options après avoir modifié d'autres propriétés peut entraîner la non-application de ces valeurs.

Cette énumération a été introduite dans Qt 6.6.

Fonctions d'accès :

QMessageBox::Options options() const
void setOptions(QMessageBox::Options options)

Voir également ` setOption()` et ` testOption()`.

standardButtons : StandardButtons

ensemble de boutons standard dans la boîte de dialogue

Cette propriété permet de définir les boutons standard utilisés par la boîte de message.

Par défaut, cette propriété ne contient aucun bouton standard.

Fonctions d'accès :

QMessageBox::StandardButtons standardButtons() const
void setStandardButtons(QMessageBox::StandardButtons buttons)

Voir aussi addButton().

text : QString

Cette propriété contient le texte de la boîte de message à afficher.

Le texte doit être une phrase ou une expression brève décrivant la situation, idéalement formulée sous la forme d'une déclaration neutre ou d'une question incitant à l'action.

Le texte sera interprété soit comme du texte brut, soit comme du texte enrichi, selon le paramètre de format du texte (QMessageBox::textFormat). Le paramètre par défaut est « Qt::AutoText », c'est-à-dire que la boîte de message tentera de détecter automatiquement le format du texte.

La valeur par défaut de cette propriété est une chaîne vide.

Fonctions d’accès :

QString text() const
void setText(const QString &text)

Voir également textFormat, QMessageBox::informativeText et QMessageBox::detailedText.

textFormat : Qt::TextFormat

Cette propriété définit le format du texte affiché dans la boîte de message

Format de texte actuellement utilisé par la boîte de message. Reportez-vous à l'énumération Qt::TextFormat pour obtenir une explication des options possibles.

Le format par défaut est « Qt::AutoText ».

Fonctions d'accès :

Qt::TextFormat textFormat() const
void setTextFormat(Qt::TextFormat format)

Voir également setText().

textInteractionFlags : Qt::TextInteractionFlags

Définit la manière dont le libellé de la boîte de dialogue doit interagir avec les entrées de l'utilisateur.

La valeur par défaut dépend du style.

Fonctions d'accès :

Qt::TextInteractionFlags textInteractionFlags() const
void setTextInteractionFlags(Qt::TextInteractionFlags flags)

Voir également QStyle::SH_MessageBox_TextInteractionFlags.

Documentation sur les fonctions membres

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

Crée une boîte de message « application modal » sans texte ni boutons. La valeur « parent » est transmise au constructeur « QDialog ».

La modalité de la fenêtre peut être redéfinie via setWindowModality() avant d’appeler show().

Remarque : l’utilisation de open() oude exec() pour afficher la boîte de message a une incidence sur la modalité de la fenêtre. Veuillez consulter la documentation détaillée de chaque fonction pour plus d’informations.

Sous macOS, si vous souhaitez que votre boîte de message s'affiche en tant que « Qt::Sheet » de sa « parent », définissez le paramètre « window modality » de la boîte de message sur « Qt::WindowModal » ou utilisez la fonction « open() ». Sinon, la boîte de message s'affichera sous la forme d'une boîte de dialogue standard.

Voir également setWindowTitle(), setText(), setIcon(), setStandardButtons() et setWindowModality().

QMessageBox::QMessageBox(QMessageBox::Icon icon, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = NoButton, QWidget *parent = nullptr, Qt::WindowFlags f = Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint)

Crée une boîte de message « application modal » avec les éléments suivants : « icon », « title », « text » et le message standard « buttons ». Des boutons standard ou personnalisés peuvent être ajoutés à tout moment à l’aide de la fonction « addButton()». Les arguments « parent » et « f » sont transmis au constructeur de « QDialog ».

La modalité de la fenêtre peut être redéfinie via setWindowModality() avant d’appeler show().

Remarque : l’utilisation de open() oude exec() pour afficher la boîte de message affecte la modalité de la fenêtre. Veuillez consulter la documentation détaillée de chaque fonction pour plus d’informations.

Sous macOS, si parent n’est pas nullptr et que vous souhaitez que votre boîte de message s’affiche en tant qu’ Qt::Sheet e de ce parent, définissez la propriété window modality de la boîte de message sur Qt::WindowModal (valeur par défaut). Sinon, la boîte de message sera une boîte de dialogue standard.

Voir également setWindowTitle(), setText(), setIcon(), setStandardButtons() et setWindowModality().

[virtual noexcept] QMessageBox::~QMessageBox()

Ferme la boîte de dialogue.

[static] void QMessageBox::about(QWidget *parent, const QString &title, const QString &text)

Affiche une boîte « À propos » simple avec le titre « title » et le texte « text ». La boîte « À propos » est une enfant de « parent ».

La fonction about() recherche une icône appropriée à quatre emplacements différents :

  1. Elle privilégie parent->icon() si celui-ci existe.
  2. Sinon, elle essaie le widget de niveau supérieur contenant « parent ».
  3. Si cela échoue, elle essaie le active window.
  4. En dernier recours, elle utilise l’icône « Informations ».

La boîte de dialogue « À propos » comporte un seul bouton intitulé « OK ».

Sous macOS, la boîte « À propos » s’affiche sous forme de fenêtre non modale ; sur les autres plateformes, elle est actuellement modale au niveau de l’application.

Voir également QWidget::windowIcon() et QApplication::activeWindow().

[static] void QMessageBox::aboutQt(QWidget *parent, const QString &title = QString())

Affiche une boîte de message simple concernant Qt, avec l'title ion indiquée et centrée sur parent (si parent n'est pas nullptr). Le message inclut le numéro de version de Qt utilisé par l'application.

Cette fonctionnalité est utile pour être intégrée dans le menu « Help » d'une application, comme illustré dans l'exemple « Menus ».

QApplication fournit cette fonctionnalité sous forme de slot.

Sous macOS, la boîte de dialogue aboutQt s’affiche sous forme de fenêtre non modale ; sur les autres plateformes, elle est actuellement modale au niveau de l’application.

Voir également ` QApplication::aboutQt()` ().

void QMessageBox::addButton(QAbstractButton *button, QMessageBox::ButtonRole role)

Ajoute l'button on indiquée à la boîte de message avec l'role spécifiée.

Voir également removeButton(), button() et setStandardButtons().

QPushButton *QMessageBox::addButton(QMessageBox::StandardButton button)

Ajoute un message standard « button » à la boîte de dialogue si cela est possible, puis renvoie le bouton.

Il s'agit d'une fonction surchargée.

Voir également setStandardButtons().

QPushButton *QMessageBox::addButton(const QString &text, QMessageBox::ButtonRole role)

Crée un bouton avec l'text fournie, l'ajoute à la boîte de message correspondant à l'role spécifiée, puis le renvoie.

Il s'agit d'une fonction surchargée.

QAbstractButton *QMessageBox::button(QMessageBox::StandardButton which) const

Renvoie un pointeur correspondant au bouton standard « which », ou « nullptr » si ce bouton standard n'existe pas dans cette boîte de dialogue.

Remarque : la modification des propriétés du bouton renvoyé peut ne pas se répercuter dans les implémentations natives de la boîte de dialogue. Pour personnaliser les boutons de la boîte de dialogue, ajoutez plutôt un custom button ou un button title, ou définissez l'option Option::DontUseNativeDialog.

Voir également standardButtons et standardButton().

[signal] void QMessageBox::buttonClicked(QAbstractButton *button)

Ce signal est émis chaque fois qu'un bouton est cliqué à l'intérieur de l'élément ` QMessageBox`. Le bouton sur lequel on a cliqué est renvoyé dans ` button`.

QMessageBox::ButtonRole QMessageBox::buttonRole(QAbstractButton *button) const

Renvoie le rôle du bouton pour l'button spécifié. Cette fonction renvoie « InvalidRole » si « button » est « nullptr » ou n'a pas été ajouté à la boîte de message.

Voir également buttons() et addButton().

QList<QAbstractButton *> QMessageBox::buttons() const

Renvoie une liste de tous les boutons qui ont été ajoutés à la boîte de message.

Voir également buttonRole(), addButton() et removeButton().

[override virtual protected] void QMessageBox::changeEvent(QEvent *ev)

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

QCheckBox *QMessageBox::checkBox() const

Renvoie la case à cocher affichée dans la boîte de dialogue. Cette valeur est « nullptr » si aucune case à cocher n'est cochée.

Voir aussi setCheckBox().

QAbstractButton *QMessageBox::clickedButton() const

Renvoie le bouton sur lequel l'utilisateur a cliqué, ou ` nullptr ` si l'utilisateur a appuyé sur la touche ` Esc ` et qu'aucun ` escape button ` n'a été défini.

Si la fonction ` exec()` n'a pas encore été appelée, renvoie `nullptr`.

Exemple :

QMessageBox messageBox(this);
QAbstractButton *disconnectButton =
      messageBox.addButton(tr("Disconnect"), QMessageBox::ActionRole);
//...
messageBox.exec();
if (messageBox.clickedButton() == disconnectButton) {
    //...
}

Voir également standardButton() et button().

[override virtual protected] void QMessageBox::closeEvent(QCloseEvent *e)

Réimplémente : QDialog::closeEvent(QCloseEvent *e).

[static] QMessageBox::StandardButton QMessageBox::critical(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = Ok, QMessageBox::StandardButton defaultButton = NoButton)

Affiche une boîte de message critique avec les paramètres « title » et « text » indiqués, devant le widget « parent » spécifié.

Les buttons standard sont ajoutés à la boîte de message. defaultButton spécifie le bouton utilisé lorsque Enter est cliqué. defaultButton doit faire référence à un bouton spécifié dans buttons. Si defaultButton est QMessageBox::NoButton, QMessageBox choisit automatiquement une valeur par défaut appropriée.

Renvoie l’identifiant du bouton standard sur lequel l’utilisateur a cliqué. Si Esc a été sélectionné à la place, la valeur escape button est renvoyée.

La boîte de message est une boîte de dialogue de type « application modal ».

Avertissement : ne supprimezpas ` parent ` pendant l’exécution de la boîte de dialogue. Si vous souhaitez le faire, vous devez créer la boîte de dialogue vous-même à l’aide de l’un des constructeurs ` QMessageBox `.

Voir également question(), warning() et information().

QPushButton *QMessageBox::defaultButton() const

Renvoie le bouton qui doit servir de bouton par défaut ( default button) de la boîte de dialogue. Renvoie nullptr si aucun bouton par défaut n'a été défini.

Voir également setDefaultButton(), addButton() et QPushButton::setDefault().

QAbstractButton *QMessageBox::escapeButton() const

Renvoie le bouton qui est activé lorsque l'on appuie sur la touche Échap.

Par défaut, QMessageBox tente de détecter automatiquement un bouton « Échap » comme suit :

  1. S'il n'y a qu'un seul bouton, celui-ci devient le bouton d'échappement.
  2. S'il existe un bouton « Cancel », celui-ci est désigné comme bouton « escape ».
  3. Sous macOS uniquement, s'il n'y a qu'un seul bouton ayant le rôle « QMessageBox::RejectRole », celui-ci est désigné comme bouton « Échap ».

Lorsqu’aucun bouton « Échap » n’a pu être détecté automatiquement, appuyer sur « Esc » n’a aucun effet.

Voir également ` setEscapeButton()` et ` addButton()`.

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

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

[override virtual slot] int QMessageBox::exec()

Réimplémente : QDialog::exec().

Affiche la boîte de message sous la forme d’un « modal dialog », en bloquant l’exécution jusqu’à ce que l’utilisateur la ferme.

Lorsqu’on utilise une boîte de message de type « QMessageBox » avec des boutons standard, cette fonction renvoie une valeur de type « StandardButton » indiquant le bouton standard sur lequel l’utilisateur a cliqué. Lorsqu’on utilise une boîte de mess QMessageBox avec des boutons personnalisés, cette fonction renvoie une valeur opaque ; utilisez la fonction « clickedButton()» pour déterminer quel bouton a été cliqué.

Remarque : la fonction result() renvoie également une valeur de type StandardButton au lieu de QDialog::DialogCode.

Les utilisateurs ne peuvent interagir avec aucune autre fenêtre de la même application tant qu’ils n’ont pas fermé la boîte de dialogue, soit en cliquant sur un bouton, soit en utilisant un mécanisme fourni par le système de fenêtrage.

Voir également show() et result().

[static] QMessageBox::StandardButton QMessageBox::information(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = Ok, QMessageBox::StandardButton defaultButton = NoButton)

Ouvre une boîte de message d'information avec les paramètres ` title ` et ` text ` indiqués, devant le widget ` parent ` spécifié.

Les buttons standard sont ajoutées à la boîte de message. defaultButton spécifie le bouton utilisé lorsque Enter est cliqué. defaultButton doit faire référence à un bouton qui a été spécifié dans buttons. Si defaultButton est QMessageBox::NoButton, QMessageBox choisit automatiquement une valeur par défaut appropriée.

Renvoie l’identifiant du bouton standard sur lequel l’utilisateur a cliqué. Si Esc a été sélectionné à la place, la valeur escape button est renvoyée.

La boîte de message est une boîte de dialogue « application modal ».

Avertissement : ne supprimezpas ` parent ` pendant l’exécution de la boîte de dialogue. Si vous souhaitez le faire, vous devez créer la boîte de dialogue vous-même à l’aide de l’un des constructeurs de ` QMessageBox `.

Voir également question(), warning() et critical().

[override virtual protected] void QMessageBox::keyPressEvent(QKeyEvent *e)

Réimplémente : QDialog::keyPressEvent(QKeyEvent *e).

void QMessageBox::open(QObject *receiver, const char *member)

Ouvre la boîte de dialogue et relie son signal « finished() » ou « buttonClicked() » au slot spécifié par « receiver » et « member ». Si le slot indiqué dans « member » a un pointeur comme premier paramètre, la connexion s'effectue vers « buttonClicked() » ; sinon, elle s'effectue vers « finished() ».

Le signal sera déconnecté du slot lorsque la boîte de dialogue sera fermée.

[static] QMessageBox::StandardButton QMessageBox::question(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = StandardButtons(Yes | No), QMessageBox::StandardButton defaultButton = NoButton)

Ouvre une boîte de dialogue de question avec les paramètres « title » et « text » indiqués, devant le widget « parent » spécifié.

Les buttons standard sont ajoutées à la boîte de message. defaultButton spécifie le bouton utilisé lorsque Enter est cliqué. defaultButton doit faire référence à un bouton indiqué dans buttons. Si defaultButton est QMessageBox::NoButton, QMessageBox choisit automatiquement une valeur par défaut appropriée.

Renvoie l’identifiant du bouton standard sur lequel l’utilisateur a cliqué. Si c’est plutôt Esc qui a été cliqué, la valeur escape button est renvoyée.

La boîte de message est une boîte de dialogue de type « application modal ».

Avertissement : ne supprimezpas ` parent ` pendant l’exécution de la boîte de dialogue. Si vous souhaitez le faire, vous devez créer la boîte de dialogue vous-même à l’aide de l’un des constructeurs ` QMessageBox `.

Voir également information(), warning() et critical().

void QMessageBox::removeButton(QAbstractButton *button)

Supprime button de la liste des boutons sans l'effacer.

Voir également addButton() et setStandardButtons().

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

Réimplémente : QDialog::resizeEvent(QResizeEvent *).

void QMessageBox::setCheckBox(QCheckBox *cb)

Active la case à cocher « cb » dans la boîte de dialogue de message. La boîte de dialogue de message prend en charge cette case à cocher. L'argument ` cb ` peut prendre la valeur ` nullptr ` pour supprimer une case à cocher existante de la boîte de dialogue de message.

Voir également checkBox().

void QMessageBox::setDefaultButton(QMessageBox::StandardButton button)

Définit la propriété « default button » de la boîte de message sur « button ».

Voir également defaultButton(), addButton() et QPushButton::setDefault().

void QMessageBox::setDefaultButton(QPushButton *button)

Définit l'default button de la boîte de message sur « button ».

Voir également addButton() et QPushButton::setDefault().

void QMessageBox::setEscapeButton(QAbstractButton *button)

Définit le bouton qui s'active lorsque la touche « Escape » est enfoncée sur « button ».

Voir également escapeButton(), addButton() et clickedButton().

void QMessageBox::setEscapeButton(QMessageBox::StandardButton button)

Définit les boutons qui s'activent lorsque l'on appuie sur la touche « Escape » sur « button ».

Voir également addButton() et clickedButton().

[since 6.6] void QMessageBox::setOption(QMessageBox::Option option, bool on = true)

Active l'option spécifiée si la valeur de « on » est « true » ; dans le cas contraire, désactive l'option spécifiée.

Les options (en particulier l’option Option::DontUseNativeDialog ) doivent être définies avant l’affichage de la boîte de dialogue.

La définition d’options alors que la boîte de dialogue est visible n’a pas nécessairement d’effet immédiat sur celle-ci.

La définition d’options après la modification d’autres propriétés peut entraîner l’absence d’effet de ces valeurs.

Cette fonction a été introduite dans Qt 6.6.

Voir également options et testOption().

void QMessageBox::setWindowModality(Qt::WindowModality windowModality)

Cette fonction remplace la fonction QWidget::setWindowModality().

Définit la modalité de la boîte de message sur « windowModality ».

Sous macOS, si la modalité est définie sur ` Qt::WindowModal ` et que la boîte de message possède un parent, alors la boîte de message sera une « Qt::Sheet » ; dans le cas contraire, elle sera une boîte de dialogue standard.

void QMessageBox::setWindowTitle(const QString &title)

Cette fonction est une version alternative de la fonction ` QWidget::setWindowTitle()`.

Définit le titre de la boîte de message sur « title ». Sous macOS, le titre de la fenêtre est ignoré (conformément aux directives macOS).

[override virtual protected] void QMessageBox::showEvent(QShowEvent *e)

Réimplémente : QDialog::showEvent(QShowEvent *event).

QMessageBox::StandardButton QMessageBox::standardButton(QAbstractButton *button) const

Renvoie la valeur d'énumération standard du bouton correspondant à l'button donné, ou NoButton si l'button donné n'est pas un bouton standard.

Voir également button() et standardButtons().

[since 6.6] bool QMessageBox::testOption(QMessageBox::Option option) const

Renvoie « true » si l’option « option » est activée ; sinon, renvoie « false ».

Cette fonction a été introduite dans Qt 6.6.

Voir aussi options et setOption().

[static] QMessageBox::StandardButton QMessageBox::warning(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = Ok, QMessageBox::StandardButton defaultButton = NoButton)

Ouvre une boîte de message d'avertissement contenant les éléments « title » et « text » indiqués, devant le widget « parent » spécifié.

Les buttons par défaut sont ajoutés à la boîte de message. defaultButton spécifie le bouton utilisé lorsque Enter est cliqué. defaultButton doit faire référence à un bouton qui a été spécifié dans buttons. Si defaultButton est QMessageBox::NoButton, QMessageBox choisit automatiquement une valeur par défaut appropriée.

Renvoie l'identifiant du bouton standard sur lequel l'utilisateur a cliqué. Si l'utilisateur a cliqué sur Esc à la place, la valeur escape button est renvoyée.

La boîte de message est une boîte de dialogue application modal.

Avertissement : ne supprimezpas parent pendant l'exécution de la boîte de dialogue. Si vous souhaitez le faire, vous devez créer la boîte de dialogue vous-même à l'aide de l'un des constructeurs de QMessageBox.

Voir également question(), information() et critical().

Documentation sur les macros

QT_REQUIRE_VERSION(int argc, char **argv, const char *version)

Cette macro permet de s'assurer que l'application s'exécute avec une version suffisamment récente de Qt. Cela s'avère particulièrement utile si votre application dépend d'un correctif spécifique introduit dans une version de correction de bogues (par exemple, la version 6.1.2).

Les paramètres « argc » et « argv » correspondent respectivement aux paramètres « argc » et « argv » de la fonction « main() ». Le paramètre « version » est une chaîne littérale qui spécifie la version de Qt requise par l'application (par exemple, « 6.1.2 »).

Exemple :

#include <QApplication>
#include <QMessageBox>

int main(int argc, char *argv[])
{
    QT_REQUIRE_VERSION(argc, argv, "4.0.2")

    QApplication app(argc, argv);
    //...
    return app.exec();
}

© 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.