Sur cette page

QMessageBox Class

La classe QMessageBox fournit une boîte de dialogue modale permettant d'informer l'utilisateur ou de lui poser une question et de recevoir une réponse. Plus d'informations...

En-tête : #include <QMessageBox>
CMake : find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake : QT += widgets
Héritages : 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 un message principal text pour alerter l'utilisateur d'une situation, un message informative text pour expliquer davantage la situation et un message facultatif detailed text pour fournir encore plus d'informations si l'utilisateur le demande.

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

Bien que le paramètre parent soit facultatif, le fait de le spécifier donne un indice 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 API sont fournies pour l'utilisation de QMessageBox : l'API basée sur les propriétés et les fonctions statiques. L'appel à l'une des fonctions statiques est l'approche la plus simple, mais elle est moins souple que l'utilisation de l'API basée sur les propriétés, et le résultat est moins informatif. Il est recommandé d'utiliser l'API basée sur les propriétés.

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

Pour utiliser l'API basée sur les propriétés, construisez une instance de QMessageBox, définissez les propriétés souhaitées et 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 supprimée.

Boîte de message avec un message simple et un bouton OK

Une meilleure approche que de simplement alerter l'utilisateur d'un événement consiste à lui demander ce qu'il doit faire à ce sujet.

Attribuez à la propriété standard buttons l'ensemble de boutons que vous souhaitez voir figurer parmi les réponses de l'utilisateur. Les boutons sont spécifiés en combinant les valeurs de StandardButtons à l'aide de l'opérateur bitwise OR. L'ordre d'affichage des boutons dépend de la plate-forme. Par exemple, sous Windows, Save est affiché à gauche de Cancel, alors que sous macOS, l'ordre est inversé. Marquez l'un de vos boutons standard comme étant votre default button.

La propriété informative text peut être utilisée pour ajouter un contexte supplémentaire 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();

Boîte de message avec boutons "Enregistrer", "Ne pas enregistrer" et "Annuler

Le slot exec() renvoie la valeur StandardButtons du bouton sur lequel on 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 donner à l'utilisateur plus d'informations afin de l'aider à choisir l'action appropriée, définissez la propriété detailed text. En fonction de la plate-forme, il se peut que l'utilisateur doive cliquer sur un bouton Show Details... pour que la propriété detailed text soit affichée.

Enregistrer la boîte de message avec un bouton "Afficher les détails...".

En cliquant sur le bouton Show Details..., le texte détaillé s'affiche.

Boîte de message d'enregistrement affichant le texte détaillé

Texte riche 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 du texte brut ou 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étacaractères XML, le texte automatique rich text detection test peut échouer et votre chaîne de texte brut peut alors être interprétée de manière incorrecte comme du 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 avec 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 message, qui ne diffèrent réellement que par l'icône prédéfinie qu'ils affichent. Spécifiez l'un des quatre types de message prédéfinis en définissant la propriété icon sur l'une des icônes predefined icons. Les règles suivantes sont des lignes directrices :

Icône de point d'interrogation

QuestionPour poser une question pendant les opérations normales.

Icône d'information

InformationPour communiquer des informations sur les opérations normales.

Icône d'avertissement

WarningPour signaler des erreurs non critiques.

Icône de 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 qui est recommandée dans le tableau ou celle qui est 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 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 de fonctions statiques, bien que pratique, est moins souple que l'API basée sur les propriétés, car les signatures de fonctions statiques manquent de paramètres pour définir les propriétés informative text et detailed text. Une solution consiste à utiliser le paramètre title comme texte principal de la boîte de message et le paramètre text comme texte informatif de la boîte de message. Comme cette solution présente l'inconvénient évident de rendre la boîte de message moins lisible, les lignes directrices de la plate-forme ne la recommandent pas. Les directives relatives à l'interface utilisateur de Microsoft Windows recommandent d'utiliser le paramètre application name comme window's title, ce qui signifie que si vous avez un texte informatif 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 sont maintenant utilisés pour définir les paramètres standard buttons et default button.

Des fonctions statiques sont disponibles pour créer les 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 des boîtes de dialogue standard montre comment utiliser QMessageBox et les autres boîtes de dialogue intégrées de Qt.

Utilisation avancée

Si les standard buttons ne sont pas assez 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 valeur ButtonRole est utilisée par QMessageBox pour déterminer l'ordre des boutons à l'écran (qui varie en fonction de la plate-forme). Vous pouvez tester la valeur de clickedButton() après avoir appelé exec(). Par exemple, vous pouvez tester la valeur de () après avoir appelé (),

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 d'échappement

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

Le bouton d'échappement (le bouton activé lorsque Esc est enfoncé) peut être spécifié à l'aide de setEscapeButton(). Si aucun bouton d'échappement n'est spécifié, QMessageBox tente d'en trouver un en utilisant ces règles :

  1. S'il n'y a qu'un seul bouton, c'est le bouton activé lorsque l'on appuie sur Esc.
  2. S'il y a un bouton Cancel, c'est le bouton activé lorsque l'on appuie sur Esc.
  3. S'il y a exactement un bouton ayant soit the Reject role, soit the No role, c'est le bouton activé lorsque l'on appuie sur Esc.

Lorsqu'il est impossible de déterminer un bouton d'échappement à l'aide de ces règles, l'appui sur Esc n'a aucun effet.

Voir également QDialogButtonBox et l'exemple de dialogue standard.

Documentation sur les types de membres

enum QMessageBox::ButtonRole

Cette énumération décrit les rôles qui peuvent être utilisés pour décrire les boutons dans la boîte à boutons. Les combinaisons de ces rôles sont autant de drapeaux utilisés pour décrire les différents aspects de leur comportement.

ConstanteValeurDescription du bouton
QMessageBox::InvalidRole-1Le bouton n'est pas valide.
QMessageBox::AcceptRole0Un clic sur le bouton entraîne l'acceptation de la boîte de dialogue (par exemple, OK).
QMessageBox::RejectRole1Un clic sur le bouton entraîne le rejet de la boîte de dialogue (par exemple, Annuler).
QMessageBox::DestructiveRole2Un clic sur le bouton entraîne une modification destructive (par exemple, pour rejeter des modifications) et ferme la boîte de dialogue.
QMessageBox::ActionRole3Un clic sur le bouton entraîne des modifications des éléments de la boîte de dialogue.
QMessageBox::HelpRole4Il est possible de cliquer sur le bouton pour demander de l'aide.
QMessageBox::YesRole5Le bouton est un bouton de type "Oui".
QMessageBox::NoRole6Le bouton ressemble à un bouton "Non".
QMessageBox::ApplyRole8Le bouton applique les modifications en cours.
QMessageBox::ResetRole7Le bouton rétablit les valeurs par défaut des champs de la boîte de dialogue.

Voir aussi StandardButton.

enum QMessageBox::Icon

Cette énumération a les valeurs suivantes :

ConstanteValeurDescription
QMessageBox::NoIcon0la boîte de message n'a pas d'icône.
QMessageBox::Question4une icône indiquant que le message pose une question.
QMessageBox::Information1une icône indiquant que le message ne sort pas de l'ordinaire.
QMessageBox::Warning2une icône indiquant que le message est un avertissement, mais qu'il peut être traité.
QMessageBox::Critical3une icône indiquant que le message représente 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 d'options.

enum QMessageBox::StandardButton
flags QMessageBox::StandardButtons

Ces enums décrivent les drapeaux des boutons standard. Chaque bouton a une valeur définie ButtonRole.

ConstanteValeurDescription
QMessageBox::Ok0x00000400Un bouton "OK" défini à l'aide de l'enum AcceptRole.
QMessageBox::Open0x00002000Un bouton "Ouvrir" défini à l'aide de la constante AcceptRole.
QMessageBox::Save0x00000800Un bouton "Enregistrer" défini à l'aide de l'adresse AcceptRole.
QMessageBox::Cancel0x00400000Un bouton "Annuler" défini à l'aide de l'adresse RejectRole.
QMessageBox::Close0x00200000Un bouton "Fermer" défini à l'aide de l'adresse RejectRole.
QMessageBox::Discard0x00800000Un bouton "Discard" ou "Don't Save", en fonction de la plateforme, défini à l'aide de l'adresse DestructiveRole.
QMessageBox::Apply0x02000000Un bouton "Appliquer" défini à l'aide de l'adresse ApplyRole.
QMessageBox::Reset0x04000000Un bouton "Reset" défini à l'aide de l'adresse ResetRole.
QMessageBox::RestoreDefaults0x08000000Un bouton "Restore Defaults" défini à l'aide de l'adresse ResetRole.
QMessageBox::Help0x01000000Un bouton "Help" défini à l'aide de l'adresse HelpRole.
QMessageBox::SaveAll0x00001000Un bouton "Save All" défini à l'aide de l'adresse AcceptRole.
QMessageBox::Yes0x00004000Un bouton "Oui" défini à l'aide de l'adresse YesRole.
QMessageBox::YesToAll0x00008000Un bouton "Oui à tout" défini à l'aide de l'adresse YesRole.
QMessageBox::No0x00010000Un bouton "Non" défini à l'aide de l'adresse NoRole.
QMessageBox::NoToAll0x00020000Un bouton "Non à tous" défini à l'aide de l'adresse NoRole.
QMessageBox::Abort0x00040000Un bouton "Abort" défini à l'aide de l'adresse RejectRole.
QMessageBox::Retry0x00080000Un bouton "Retry" défini à l'aide de l'adresse AcceptRole.
QMessageBox::Ignore0x00100000Un bouton "Ignorer" défini à l'aide de l'adresse AcceptRole.
QMessageBox::NoButton0x00000000Un bouton invalide.

Les valeurs suivantes sont obsolètes :

ConstanteValeurDescription
QMessageBox::YesAllYesToAllUtiliser YesToAll à la place.
QMessageBox::NoAllNoToAllUtilisez NoToAll à la place.
QMessageBox::Default0x00000100Utiliser l'argument defaultButton de information(), warning(), etc. à la place, ou appeler setDefaultButton().
QMessageBox::Escape0x00000200Appelez plutôt 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 aussi QMessageBox::text et QMessageBox::informativeText.

icon : Icon

Cette propriété contient l'icône de la boîte aux lettres

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

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

La pixmap utilisée pour afficher l'icône actuelle dépend de la valeur courante GUI style. Vous pouvez également définir une pixmap personnalisée pour l'icône en définissant la propriété icon pixmap.

Fonctions d'accès :

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

Voir aussi 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 dessiner une pixmap qui convienne à tous les styles d'interface graphique ; vous voudrez peut-être fournir une pixmap différente pour chaque plate-forme.

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

Fonctions d'accès :

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

Voir aussi icon.

informativeText : QString

Cette propriété contient le texte informatif qui fournit une description plus complète du message

Le texte informatif peut être utilisé pour développer le message text() et donner plus d'informations à l'utilisateur, par exemple en décrivant les conséquences de la situation ou en suggérant d'autres solutions.

Le texte sera interprété soit comme un texte simple, soit comme un texte enrichi, en fonction de la configuration du format de texte (QMessageBox::textFormat). Le paramètre par défaut est Qt::AutoText, c'est-à-dire que la boîte de message essaiera 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 affectent l'aspect et la convivialité de la boîte de dialogue.

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

L'option Option::DontUseNativeDialog doit être définie 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 la boîte de dialogue.

Le fait de définir des options après avoir modifié d'autres propriétés peut faire en sorte que ces valeurs n'aient aucun effet.

Cette propriété a été introduite dans Qt 6.6.

Fonctions d'accès :

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

Voir aussi setOption() et testOption().

standardButtons : StandardButtons

collection de boutons standard dans la boîte à messages

Cette propriété contrôle 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.

Il doit s'agir d'une phrase brève décrivant la situation, idéalement formulée sous la forme d'une déclaration neutre ou d'une question d'appel à l'action.

Le texte sera interprété soit comme un texte simple, soit comme un texte enrichi, en fonction du paramètre de format de texte (QMessageBox::textFormat). Le paramètre par défaut est Qt::AutoText, c'est-à-dire que la boîte de message essaiera 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é par la boîte de message

Le format de texte actuellement utilisé par la boîte de message. Voir l'énumération Qt::TextFormat pour 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

Spécifie comment l'étiquette de la boîte de message doit interagir avec la saisie 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)

Construit une boîte de message application modal sans texte ni bouton. parent est transmis au constructeur QDialog.

La modalité de la fenêtre peut être remplacée par setWindowModality() avant d'appeler show().

Remarque : l'utilisation de open() ou 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 vous voulez que votre boîte de message apparaisse comme une Qt::Sheet de sa parent, définissez la window modality de la boîte de message sur Qt::WindowModal ou utilisez open(). Sinon, la boîte de message sera 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)

Construit une boîte de message application modal avec les éléments donnés icon, title, text, et l'élément standard buttons. Des boutons standard ou personnalisés peuvent être ajoutés à tout moment à l'aide de addButton(). Les arguments parent et f sont transmis au constructeur QDialog.

La modalité de la fenêtre peut être remplacée par setWindowModality() avant d'appeler show().

Remarque : l'utilisation de open() ou 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 apparaisse en tant que Qt::Sheet de ce parent, définissez window modality de la boîte de message sur Qt::WindowModal (par défaut). Sinon, la boîte de message sera une boîte de dialogue standard.

Voir aussi setWindowTitle(), setText(), setIcon(), setStandardButtons() et setWindowModality().

[virtual noexcept] QMessageBox::~QMessageBox()

Détruit la boîte de message.

[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. Le parent de la boîte "about" est parent.

about() recherche une icône appropriée à quatre endroits :

  1. Il préfère parent->icon() s'il existe.
  2. Si ce n'est pas le cas, il essaie le widget de premier niveau contenant parent.
  3. En cas d'échec, il essaie le widget de niveau supérieur contenant . active window.
  4. En dernier recours, il utilise l'icône Information.

La boîte "À propos" comporte un seul bouton intitulé "OK".

Sur macOS, la boîte "À propos" s'affiche sous la forme d'une fenêtre sans modèle ; sur les autres plates-formes, il s'agit actuellement d'une application modale.

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

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

Affiche une boîte de message simple sur Qt, avec l'adresse title 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.

Il est utile de l'inclure dans le menu Help d'une application, comme le montre l'exemple des menus.

QApplication fournit cette fonctionnalité sous forme de slot.

Sur macOS, la boîte aboutQt est affichée comme une fenêtre sans modèle ; sur d'autres plateformes, elle est actuellement modale.

Voir aussi QApplication::aboutQt().

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

Ajoute le message button donné à la boîte aux lettres avec le message role spécifié.

Voir aussi removeButton(), button() et setStandardButtons().

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

Ajoute un button standard à la boîte de message s'il est valide, et renvoie le bouton poussoir.

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

Voir aussi setStandardButtons().

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

Crée un bouton avec le nom text, l'ajoute à la boîte de message pour le nom role et 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 le bouton standard n'existe pas dans cette boîte de message.

Remarque : la modification des propriétés du bouton retourné peut ne pas être reflétée dans les implémentations natives de la boîte de dialogue. Pour personnaliser les boutons de la boîte de dialogue, ajoutez un bouton custom button ou button title à la place, ou définissez l'option Option::DontUseNativeDialog.

Voir aussi standardButtons et standardButton().

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

Ce signal est émis chaque fois qu'un bouton est cliqué à l'intérieur du site QMessageBox. Le bouton qui a été cliqué est renvoyé dans le site button.

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

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

Voir aussi 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 aussi 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. C'est nullptr si aucune case à cocher n'est définie.

Voir également 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 exec() n'a pas encore été appelé, il renvoie nullptr.

Exemple :

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

Voir aussi 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)

Ouvre une boîte de message critique avec les adresses title et text devant le widget parent spécifié.

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

Renvoie l'identité du bouton standard qui a été cliqué. Si Esc a été pressé à la place, escape button est renvoyé.

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

Attention : Ne supprimez pas 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 en utilisant l'un des constructeurs QMessageBox.

Voir aussi question(), warning() et information().

QPushButton *QMessageBox::defaultButton() const

Renvoie le bouton qui doit être le bouton de la boîte de message default button. Renvoie nullptr si aucun bouton par défaut n'a été défini.

Voir aussi setDefaultButton(), addButton() et QPushButton::setDefault().

QAbstractButton *QMessageBox::escapeButton() const

Renvoie le bouton qui est activé lorsque l'on appuie sur escape.

Par défaut, QMessageBox tente de détecter automatiquement un bouton d'échappement comme suit :

  1. S'il n'y a qu'un seul bouton, il devient le bouton d'échappement.
  2. S'il y a un bouton Cancel, il devient le bouton d'échappement.
  3. Sur macOS uniquement, s'il y a exactement un bouton avec le rôle QMessageBox::RejectRole, il devient le bouton d'échappement.

Lorsqu'un bouton d'échappement n'a pas pu être détecté automatiquement, le fait d'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 forme de modal dialog, en la bloquant jusqu'à ce que l'utilisateur la ferme.

Lors de l'utilisation d'un QMessageBox avec des boutons standard, cette fonction renvoie une valeur StandardButton indiquant le bouton standard sur lequel l'utilisateur a cliqué. Lors de l'utilisation de QMessageBox avec des boutons personnalisés, cette fonction renvoie une valeur opaque ; utilisez clickedButton() pour déterminer le bouton sur lequel l'utilisateur a cliqué.

Remarque : la fonction result() renvoie également la valeur 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êtres.

Voir aussi 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 adresses title et text devant le widget parent spécifié.

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

Renvoie l'identité du bouton standard qui a été cliqué. Si Esc a été pressé à la place, escape button est renvoyé.

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

Attention : Ne supprimez pas 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 en utilisant l'un des constructeurs QMessageBox.

Voir aussi 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 connecte son signal finished() ou buttonClicked() à l'emplacement spécifié par receiver et member. Si l'emplacement dans member a un pointeur pour son premier paramètre, la connexion est à buttonClicked(), sinon la connexion est à finished().

Le signal sera déconnecté de l'emplacement 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 questions avec les adresses title et text devant le widget parent spécifié.

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

Renvoie l'identité du bouton standard qui a été cliqué. Si Esc a été pressé à la place, escape button est renvoyé.

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

Attention : Ne supprimez pas 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 en utilisant l'un des constructeurs QMessageBox.

Voir aussi information(), warning() et critical().

void QMessageBox::removeButton(QAbstractButton *button)

Retire button de la boîte à boutons sans la supprimer.

Voir aussi addButton() et setStandardButtons().

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

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

void QMessageBox::setCheckBox(QCheckBox *cb)

Définit la case à cocher cb dans la boîte de dialogue du message. La boîte de message est propriétaire de la case à cocher. L'argument cb peut être nullptr pour supprimer une case à cocher existante de la boîte de message.

Voir également checkBox().

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

Fixe la valeur de la boîte de message default button à button.

Voir aussi defaultButton(), addButton() et QPushButton::setDefault().

void QMessageBox::setDefaultButton(QPushButton *button)

Fixe la valeur de la boîte de message default button à button.

Voir aussi addButton() et QPushButton::setDefault().

void QMessageBox::setEscapeButton(QAbstractButton *button)

Définit le bouton qui est activé lorsque la touche Escape est pressée à button.

Voir aussi escapeButton(), addButton() et clickedButton().

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

Définit les boutons qui sont activés lorsque la touche Escape est pressée à button.

Voir aussi addButton() et clickedButton().

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

Active l'option option si on est vrai ; sinon, efface l'option option.

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

La définition d'options pendant que la boîte de dialogue est visible n'est pas garantie d'avoir un effet immédiat sur la boîte de dialogue.

Le fait de définir des options après avoir modifié d'autres propriétés peut faire en sorte que ces valeurs n'aient aucun effet.

Cette fonction a été introduite dans Qt 6.6.

Voir aussi options et testOption().

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

Cette fonction fait de l'ombre à QWidget::setWindowModality().

Définit la modalité de la boîte de message à windowModality.

Sous macOS, si la modalité est définie sur Qt::WindowModal et que la boîte de message a un parent, la boîte de message sera une Qt::Sheet, sinon la boîte de message sera une boîte de dialogue standard.

void QMessageBox::setWindowTitle(const QString &title)

Cette fonction fait de l'ombre à QWidget::setWindowTitle().

Définit le titre de la boîte de message à 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 de l'énumération des boutons standard correspondant à l'adresse button, ou NoButton si l'adresse button n'est pas un bouton standard.

Voir aussi button() et standardButtons().

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

Renvoie true si le site option est activé ; 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 avec les adresses title et text devant le widget parent spécifié.

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

Renvoie l'identité du bouton standard qui a été cliqué. Si Esc a été pressé à la place, escape button est renvoyé.

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

Attention : Ne supprimez pas 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 en utilisant l'un des constructeurs QMessageBox.

Voir aussi question(), information() et critical().

Documentation sur les macros

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

Cette macro peut être utilisée pour s'assurer que l'application est exécutée avec une version suffisamment récente de Qt. Ceci est particulièrement utile si votre application dépend d'une correction de bogue spécifique introduite dans une version de correction de bogue (par exemple, 6.1.2).

Les paramètres argc et argv sont les paramètres argc et argv de la fonction main(). Le paramètre version est une chaîne de caractères littérale qui spécifie la version de Qt XML 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.