QMessageBox Class

Die Klasse QMessageBox stellt einen modalen Dialog zur Verfügung, um den Benutzer zu informieren oder um ihm eine Frage zu stellen und eine Antwort zu erhalten. Mehr...

Kopfzeile: #include <QMessageBox>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Vererbt: QDialog

Öffentliche Typen

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

Eigenschaften

Öffentliche Funktionen

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

Öffentliche Slots

virtual int exec() override

Signale

void buttonClicked(QAbstractButton *button)

Statische öffentliche Mitglieder

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)

Reimplementierte geschützte Funktionen

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

Makros

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

Detaillierte Beschreibung

Ein Meldungsfeld zeigt ein primäres text an, um den Benutzer auf eine Situation aufmerksam zu machen, ein informative text, um die Situation weiter zu erklären, und ein optionales detailed text, um noch mehr Daten zu liefern, wenn der Benutzer dies wünscht.

Ein Meldungsfeld kann auch ein icon und standard buttons anzeigen, um eine Benutzerantwort zu akzeptieren.

Für die Verwendung von QMessageBox stehen zwei APIs zur Verfügung: die eigenschaftsbasierte API und die statischen Funktionen. Der Aufruf einer der statischen Funktionen ist der einfachere Ansatz, aber er ist weniger flexibel als die Verwendung der eigenschaftsbasierten API, und das Ergebnis ist weniger informativ. Es wird empfohlen, die eigenschaftsbasierte API zu verwenden.

Die eigenschaftsbasierte API

Um die eigenschaftsbasierte API zu verwenden, erstellen Sie eine Instanz von QMessageBox, setzen die gewünschten Eigenschaften und rufen exec() auf, um die Nachricht anzuzeigen. Die einfachste Konfiguration besteht darin, nur die Eigenschaft message text zu setzen.

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

Der Benutzer muss auf die Schaltfläche OK klicken, um das Nachrichtenfeld zu schließen. Der Rest der grafischen Benutzeroberfläche ist blockiert, bis das Meldungsfeld geschlossen wird.

Ein besserer Ansatz, als den Benutzer nur auf ein Ereignis aufmerksam zu machen, ist es, den Benutzer auch zu fragen, was er tun soll.

Setzen Sie die Eigenschaft standard buttons auf die Schaltflächen, die Sie als Benutzerreaktionen verwenden möchten. Die Schaltflächen werden durch die Kombination von Werten aus StandardButtons mit dem bitweisen OR-Operator festgelegt. Die Anzeigereihenfolge für die Schaltflächen ist plattformabhängig. Unter Windows wird zum Beispiel Save links von Cancel angezeigt, während unter macOS die Reihenfolge umgekehrt ist. Markieren Sie eine Ihrer Standardschaltflächen als Ihre default button.

Die Eigenschaft informative text kann verwendet werden, um zusätzlichen Kontext hinzuzufügen, der dem Benutzer hilft, die richtige Aktion zu wählen.

QMessageBox msgBox;
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();

Der exec()-Slot gibt den StandardButtons -Wert der Schaltfläche zurück, auf die geklickt wurde.

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;
}

Um dem Benutzer weitere Informationen zu geben, die ihm helfen, die richtige Aktion zu wählen, setzen Sie die Eigenschaft detailed text. Je nach Plattform kann es für detailed text erforderlich sein, dass der Benutzer auf eine Schaltfläche Show Details... klickt, um sie anzuzeigen.

Wenn Sie auf die Schaltfläche Show Details... klicken, wird der detaillierte Text angezeigt.

Rich Text und die Eigenschaft Textformat

Die Eigenschaft detailed text wird immer als reiner Text interpretiert. Die Eigenschaften main text und informative text können entweder Klartext oder Rich Text sein. Diese Zeichenketten werden entsprechend der Einstellung der Eigenschaft text format interpretiert. Die Standardeinstellung ist auto-text.

Beachten Sie, dass bei einigen Nur-Text-Zeichenfolgen, die XML-Meta-Zeichen enthalten, die automatische Texterkennung rich text detection test fehlschlagen kann, so dass Ihre Nur-Text-Zeichenfolge fälschlicherweise als Rich-Text interpretiert wird. In diesen seltenen Fällen verwenden Sie Qt::convertFromPlainText(), um Ihre Nur-Text-Zeichenfolge in eine visuell gleichwertige Rich-Text-Zeichenfolge zu konvertieren, oder setzen Sie die Eigenschaft text format explizit mit setTextFormat().

Schweregrade und die Icon- und Pixmap-Eigenschaften

QMessageBox unterstützt vier vordefinierte Nachrichtenschweregrade oder Nachrichtentypen, die sich eigentlich nur durch das vordefinierte Symbol unterscheiden, das sie jeweils anzeigen. Legen Sie einen der vier vordefinierten Meldungstypen fest, indem Sie die Eigenschaft icon auf eine der predefined icons setzen. Die folgenden Regeln sind Richtlinien:

QuestionUm eine Frage während des normalen Betriebs zu stellen.

InformationFür die Meldung von Informationen über normale Vorgänge.

WarningFür die Meldung von unkritischen Fehlern.

CriticalFür die Meldung von kritischen Fehlern.

Predefined icons sind nicht durch QMessageBox definiert, sondern werden durch den Stil bereitgestellt. Der Standardwert ist No Icon. Die Meldungsfelder sind ansonsten in allen Fällen gleich. Wenn Sie ein Standardsymbol verwenden, verwenden Sie das in der Tabelle empfohlene Symbol oder das in den Stilrichtlinien für Ihre Plattform empfohlene Symbol. Wenn keines der Standardsymbole für Ihr Meldungsfeld geeignet ist, können Sie ein benutzerdefiniertes Symbol verwenden, indem Sie die Eigenschaft icon pixmap anstelle der Eigenschaft icon festlegen.

Zusammenfassend lässt sich sagen, dass Sie zum Festlegen eines Symbols entweder setIcon() für eines der Standardsymbole oder setIconPixmap() für ein benutzerdefiniertes Symbol verwenden.

Die API für statische Funktionen

Die Erstellung von Meldungsboxen mit der API für statische Funktionen ist zwar bequem, aber weniger flexibel als die Verwendung der eigenschaftsbasierten API, da den Signaturen der statischen Funktionen Parameter zum Setzen der Eigenschaften informative text und detailed text fehlen. Eine Möglichkeit, dies zu umgehen, besteht darin, den Parameter title als Haupttext für das Nachrichtenfeld und den Parameter text als Informationstext für das Nachrichtenfeld zu verwenden. Da dies den offensichtlichen Nachteil hat, dass das Nachrichtenfeld weniger lesbar ist, empfehlen die Plattformrichtlinien dies nicht. In den Microsoft Windows User Interface Guidelines wird empfohlen, den Parameter application name als window's title zu verwenden. Das bedeutet, dass Sie, wenn Sie zusätzlich zum Haupttext einen informativen Text haben, diesen mit dem Parameter text verketten müssen.

Beachten Sie, dass sich die Signaturen der statischen Funktionen in Bezug auf ihre Schaltflächenparameter geändert haben, die nun zum Setzen der standard buttons und der default button verwendet werden.

Statische Funktionen sind für die Erstellung von information(), question(), warning() und critical() Nachrichtenboxen verfügbar.

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);

Das Beispiel Standarddialoge zeigt, wie man QMessageBox und die anderen eingebauten Qt-Dialoge verwendet.

Erweiterte Verwendung

Wenn die standard buttons nicht flexibel genug für Ihr Nachrichtenfeld sind, können Sie die addButton()-Überladung verwenden, die einen Text und ein ButtonRole benötigt, um benutzerdefinierte Schaltflächen hinzuzufügen. Die ButtonRole wird von QMessageBox verwendet, um die Reihenfolge der Schaltflächen auf dem Bildschirm zu bestimmen (die je nach Plattform unterschiedlich ist). Sie können den Wert von clickedButton() nach dem Aufruf von exec() testen. Zum Beispiel,

QMessageBox msgBox;
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
}

Standard- und Escape-Tasten

Die Standardtaste (d. h. die Taste, die aktiviert wird, wenn Enter gedrückt wird) kann mit setDefaultButton() angegeben werden. Wird keine Standardtaste angegeben, versucht QMessageBox, eine Taste auf der Grundlage von button roles der im Nachrichtenfeld verwendeten Tasten zu finden.

Die Escape-Schaltfläche (die Schaltfläche, die aktiviert wird, wenn Esc gedrückt wird) kann mit setEscapeButton() angegeben werden. Wenn keine Escape-Schaltfläche angegeben ist, versucht QMessageBox, anhand dieser Regeln eine zu finden:

  1. Wenn es nur eine Taste gibt, ist es die Taste, die beim Drücken von Esc aktiviert wird.
  2. Wenn es eine Schaltfläche Cancel gibt, ist es die Schaltfläche, die beim Drücken von Esc aktiviert wird.
  3. Wenn es genau eine Taste gibt, die entweder the Reject role oder the No role hat, ist es die Taste, die aktiviert wird, wenn Esc gedrückt wird.

Wenn eine Escape-Schaltfläche anhand dieser Regeln nicht bestimmt werden kann, hat das Drücken von Esc keine Wirkung.

Siehe auch QDialogButtonBox und Standarddialoge Beispiel.

Mitgliedstyp Dokumentation

enum QMessageBox::ButtonRole

Diese Aufzählung beschreibt die Rollen, die zur Beschreibung von Schaltflächen in der Schaltflächenbox verwendet werden können. Kombinationen dieser Rollen werden als Flags verwendet, um verschiedene Aspekte ihres Verhaltens zu beschreiben.

KonstanteWertBeschreibung
QMessageBox::InvalidRole-1Die Schaltfläche ist ungültig.
QMessageBox::AcceptRole0Das Anklicken der Schaltfläche führt dazu, dass der Dialog akzeptiert wird (z. B. OK).
QMessageBox::RejectRole1Das Anklicken der Schaltfläche führt zur Ablehnung des Dialogs (z. B. Abbrechen).
QMessageBox::DestructiveRole2Das Anklicken der Schaltfläche führt zu einer destruktiven Änderung (z. B. für Änderungen verwerfen) und schließt den Dialog.
QMessageBox::ActionRole3Das Anklicken der Schaltfläche führt zu Änderungen an den Elementen innerhalb des Dialogs.
QMessageBox::HelpRole4Die Schaltfläche kann angeklickt werden, um Hilfe anzufordern.
QMessageBox::YesRole5Die Schaltfläche ist eine "Ja"-ähnliche Schaltfläche.
QMessageBox::NoRole6Die Schaltfläche ist eine "Nein"-ähnliche Schaltfläche.
QMessageBox::ApplyRole8Die Schaltfläche wendet aktuelle Änderungen an.
QMessageBox::ResetRole7Die Schaltfläche setzt die Felder des Dialogs auf die Standardwerte zurück.

Siehe auch StandardButton.

enum QMessageBox::Icon

Diese Aufzählung hat die folgenden Werte:

KonstanteWertBeschreibung
QMessageBox::NoIcon0das Nachrichtenfeld hat kein Symbol.
QMessageBox::Question4ein Symbol, das anzeigt, dass die Nachricht eine Frage stellt.
QMessageBox::Information1ein Symbol, das anzeigt, dass die Nachricht nichts Ungewöhnliches ist.
QMessageBox::Warning2ein Symbol, das anzeigt, dass es sich um eine Warnung handelt, die aber behoben werden kann.
QMessageBox::Critical3ein Symbol, das anzeigt, dass die Nachricht ein kritisches Problem darstellt.

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

KonstanteWertBeschreibung
QMessageBox::Option::DontUseNativeDialog0x00000001Den nativen Meldungsdialog nicht verwenden.

Diese Aufzählung wurde in Qt 6.6 eingeführt.

Der Options-Typ ist ein Typedef für QFlags<Option>. Er speichert eine OR-Kombination von Optionswerten.

enum QMessageBox::StandardButton
flags QMessageBox::StandardButtons

Diese Enums beschreiben Flags für Standard-Buttons. Jede Schaltfläche hat eine definierte ButtonRole.

KonstanteWertBeschreibung
QMessageBox::Ok0x00000400Eine "OK"-Schaltfläche, die mit dem AcceptRole definiert ist.
QMessageBox::Open0x00002000Eine "Öffnen"-Schaltfläche, die mit AcceptRole definiert ist.
QMessageBox::Save0x00000800Eine "Speichern"-Schaltfläche, die mit AcceptRole definiert wurde.
QMessageBox::Cancel0x00400000Eine "Abbrechen"-Schaltfläche, die mit der RejectRole definiert wurde.
QMessageBox::Close0x00200000Eine "Schließen"-Schaltfläche, die mit der RejectRole definiert wird.
QMessageBox::Discard0x00800000Eine Schaltfläche "Verwerfen" oder "Nicht speichern", je nach Plattform, die mit DestructiveRole definiert wird.
QMessageBox::Apply0x02000000Eine "Anwenden"-Schaltfläche, die mit der ApplyRole definiert wird.
QMessageBox::Reset0x04000000Eine "Zurücksetzen"-Schaltfläche, die mit der ResetRole definiert wird.
QMessageBox::RestoreDefaults0x08000000Eine Schaltfläche "Standardeinstellungen wiederherstellen", die mit ResetRole definiert wird.
QMessageBox::Help0x01000000Eine "Hilfe"-Schaltfläche, die mit HelpRole definiert wurde.
QMessageBox::SaveAll0x00001000Eine Schaltfläche "Alles speichern", definiert mit AcceptRole.
QMessageBox::Yes0x00004000Eine "Ja"-Schaltfläche, die mit YesRole definiert wurde.
QMessageBox::YesToAll0x00008000Eine "Ja zu allen"-Schaltfläche, die mit YesRole definiert wurde.
QMessageBox::No0x00010000Eine "Nein"-Schaltfläche, die mit der NoRole definiert wird.
QMessageBox::NoToAll0x00020000Eine "Nein zu allen"-Schaltfläche, die mit der NoRole definiert wird.
QMessageBox::Abort0x00040000Eine "Abbrechen"-Schaltfläche, die mit der RejectRole definiert wird.
QMessageBox::Retry0x00080000Eine "Wiederholen"-Schaltfläche, die mit der AcceptRole definiert wird.
QMessageBox::Ignore0x00100000Eine "Ignorieren"-Schaltfläche, die mit der AcceptRole definiert wurde.
QMessageBox::NoButton0x00000000Eine ungültige Schaltfläche.

Die folgenden Werte sind obsolet:

KonstanteWertBeschreibung
QMessageBox::YesAllYesToAllVerwenden Sie stattdessen YesToAll.
QMessageBox::NoAllNoToAllVerwenden Sie stattdessen NoToAll.
QMessageBox::Default0x00000100Verwenden Sie stattdessen das Argument defaultButton von information(), warning(), usw., oder rufen Sie setDefaultButton() auf.
QMessageBox::Escape0x00000200Rufen Sie stattdessen setEscapeButton() auf.
QMessageBox::FlagMask0x00000300
QMessageBox::ButtonMask~FlagMask

Der Typ StandardButtons ist ein Typedef für QFlags<StandardButton>. Er speichert eine ODER-Kombination von StandardButton-Werten.

Siehe auch ButtonRole und standardButtons.

Dokumentation der Eigenschaften

detailedText : QString

Diese Eigenschaft enthält den Text, der im Detailbereich angezeigt werden soll.

Der Text wird als einfacher Text interpretiert.

Standardmäßig enthält diese Eigenschaft eine leere Zeichenkette.

Zugriffsfunktionen:

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

Siehe auch QMessageBox::text und QMessageBox::informativeText.

icon : Icon

Diese Eigenschaft enthält das Symbol der Nachrichtenbox

Das Symbol des Meldungsfeldes kann mit einem der Werte angegeben werden:

Der Standardwert ist QMessageBox::NoIcon.

Die für die Anzeige des Symbols verwendete Pixmap hängt von der aktuellen GUI style ab. Sie können auch eine benutzerdefinierte Pixmap für das Symbol festlegen, indem Sie die Eigenschaft icon pixmap setzen.

Zugriffsfunktionen:

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

Siehe auch iconPixmap.

iconPixmap : QPixmap

Diese Eigenschaft enthält das aktuelle Symbol

Das Symbol, das derzeit von der Messagebox verwendet wird. Beachten Sie, dass es oft schwierig ist, ein einziges Pixmap zu zeichnen, das für alle GUI-Stile geeignet ist; möglicherweise möchten Sie für jede Plattform ein anderes Pixmap bereitstellen.

Standardmäßig ist diese Eigenschaft undefiniert.

Zugriffsfunktionen:

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

Siehe auch icon.

informativeText : QString

Diese Eigenschaft enthält den informativen Text, der eine ausführlichere Beschreibung der Nachricht liefert

Informativer Text kann verwendet werden, um die text() zu erweitern und dem Benutzer weitere Informationen zu geben, z. B. eine Beschreibung der Konsequenzen der Situation oder alternative Lösungsvorschläge.

Je nach Einstellung des Textformats (QMessageBox::textFormat) wird der Text entweder als einfacher Text oder als Rich Text interpretiert. Die Standardeinstellung ist Qt::AutoText, d. h., das Nachrichtenfeld versucht, das Format des Textes automatisch zu erkennen.

Standardmäßig enthält diese Eigenschaft eine leere Zeichenfolge.

Zugriffsfunktionen:

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

Siehe auch textFormat, QMessageBox::text, und QMessageBox::detailedText.

[since 6.6] options : Options

Optionen, die das Aussehen des Dialogs beeinflussen.

Standardmäßig sind diese Optionen deaktiviert.

Die Option Option::DontUseNativeDialog sollte eingestellt werden, bevor die Dialogeigenschaften geändert oder das Dialogfeld angezeigt wird.

Wenn Sie Optionen setzen, während das Dialogfeld sichtbar ist, ist nicht gewährleistet, dass sie sich sofort auf das Dialogfeld auswirken.

Das Setzen von Optionen nach dem Ändern anderer Eigenschaften kann dazu führen, dass diese Werte keine Wirkung haben.

Diese Eigenschaft wurde in Qt 6.6 eingeführt.

Zugriffsfunktionen:

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

Siehe auch setOption() und testOption().

standardButtons : StandardButtons

Sammlung von Standardschaltflächen in der Nachrichtenbox

Diese Eigenschaft steuert, welche Standardschaltflächen vom Nachrichtenfeld verwendet werden.

Standardmäßig enthält diese Eigenschaft keine Standardschaltflächen.

Zugriffsfunktionen:

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

Siehe auch addButton().

text : QString

Diese Eigenschaft enthält den anzuzeigenden Text für das Nachrichtenfeld.

Der Text sollte ein kurzer Satz oder eine Phrase sein, der/die die Situation beschreibt, idealerweise als neutrale Aussage oder als Aufforderung zum Handeln formuliert.

Der Text wird entweder als reiner Text oder als Rich Text interpretiert, je nach Einstellung des Textformats (QMessageBox::textFormat). Die Standardeinstellung ist Qt::AutoText, d. h., das Nachrichtenfeld versucht, das Format des Textes automatisch zu erkennen.

Der Standardwert für diese Eigenschaft ist eine leere Zeichenkette.

Zugriffsfunktionen:

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

Siehe auch textFormat, QMessageBox::informativeText, und QMessageBox::detailedText.

textFormat : Qt::TextFormat

Diese Eigenschaft enthält das Format des vom Meldungsfeld angezeigten Textes

Das aktuelle Textformat, das vom Meldungsfeld verwendet wird. Siehe Qt::TextFormat enum für eine Erklärung der möglichen Optionen.

Das Standardformat ist Qt::AutoText.

Zugriffsfunktionen:

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

Siehe auch setText().

textInteractionFlags : Qt::TextInteractionFlags

Gibt an, wie die Beschriftung des Meldungsfeldes mit Benutzereingaben interagieren soll.

Der Standardwert hängt vom Stil ab.

Zugriffsfunktionen:

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

Siehe auch QStyle::SH_MessageBox_TextInteractionFlags.

Dokumentation der Mitgliedsfunktionen

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

Konstruiert ein application modal Nachrichtenfenster ohne Text und ohne Schaltflächen. parent wird an den QDialog Konstruktor übergeben.

Die Fenstermodalität kann mit setWindowModality() überschrieben werden, bevor show() aufgerufen wird.

Hinweis: Die Verwendung von open() oder exec() zur Anzeige des Meldungsfensters hat Auswirkungen auf die Fenstermodalität. Weitere Informationen finden Sie in der ausführlichen Dokumentation zu jeder Funktion.

Wenn Sie unter macOS möchten, dass Ihr Nachrichtenfeld als Qt::Sheet seines parent erscheint, setzen Sie window modality des Nachrichtenfeldes auf Qt::WindowModal oder verwenden Sie open(). Andernfalls ist das Nachrichtenfeld ein Standarddialogfeld.

Siehe auch setWindowTitle(), setText(), setIcon(), setStandardButtons(), und 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)

Konstruiert ein application modal Nachrichtenfeld mit den gegebenen icon, title, text, und Standard buttons. Standard- oder benutzerdefinierte Schaltflächen können jederzeit mit addButton() hinzugefügt werden. Die Argumente parent und f werden an den Konstruktor QDialog übergeben.

Die Fenstermodalität kann mit setWindowModality() überschrieben werden, bevor show() aufgerufen wird.

Hinweis: Die Verwendung von open() oder exec() zur Anzeige des Meldungsfensters hat Auswirkungen auf die Fenstermodalität. Weitere Informationen finden Sie in der ausführlichen Dokumentation zu jeder Funktion.

Wenn unter macOS parent nicht nullptr ist und Sie möchten, dass Ihr Nachrichtenfeld als Qt::Sheet des übergeordneten Fensters erscheint, setzen Sie window modality des Nachrichtenfeldes auf Qt::WindowModal (Standard). Andernfalls wird das Nachrichtenfeld ein Standarddialogfeld sein.

Siehe auch setWindowTitle(), setText(), setIcon(), setStandardButtons(), und setWindowModality().

[virtual noexcept] QMessageBox::~QMessageBox()

Zerstört das Nachrichtenfeld.

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

Zeigt ein einfaches Informationsfeld mit dem Titel title und dem Text text an. Das übergeordnete Element der about-Box ist parent.

about() sucht an vier Stellen nach einem geeigneten Symbol:

  1. Es bevorzugt parent->icon(), wenn es existiert.
  2. Ist dies nicht der Fall, versucht es das oberste Widget, das parent enthält.
  3. Schlägt dies fehl, versucht es das active window.
  4. Als letzten Ausweg verwendet es das Informationssymbol.

Das Info-Feld hat eine einzelne Schaltfläche mit der Aufschrift "OK".

Unter macOS wird das Info-Fenster als modellloses Fenster angezeigt; auf anderen Plattformen ist es derzeit ein modales Anwendungsfenster.

Siehe auch QWidget::windowIcon() und QApplication::activeWindow().

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

Zeigt ein einfaches Nachrichtenfeld über Qt an, mit der angegebenen title und zentriert über parent (wenn parent nicht nullptr ist). Die Meldung enthält die Versionsnummer von Qt, die von der Anwendung verwendet wird.

Dies ist nützlich für die Aufnahme in das Help Menü einer Anwendung, wie im Beispiel Menüs gezeigt.

QApplication bietet diese Funktionalität als Slot.

Unter macOS wird das aboutQt-Fenster als modellloses Fenster angezeigt; auf anderen Plattformen ist es derzeit modal.

Siehe auch QApplication::aboutQt().

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

Fügt die angegebene button in das Nachrichtenfeld mit der angegebenen role ein.

Siehe auch removeButton(), button(), und setStandardButtons().

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

Dies ist eine überladene Funktion.

Fügt dem Nachrichtenfeld einen Standard button hinzu, wenn dies zulässig ist, und gibt die Drucktaste zurück.

Siehe auch setStandardButtons().

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

Dies ist eine überladene Funktion.

Erzeugt eine Schaltfläche mit der angegebenen text, fügt sie dem Nachrichtenfeld für die angegebene role hinzu und gibt sie zurück.

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

Gibt einen Zeiger zurück, der der Standardschaltfläche which entspricht, oder nullptr, wenn die Standardschaltfläche in diesem Meldungsfenster nicht vorhanden ist.

Hinweis: Das Ändern der Eigenschaften der zurückgegebenen Schaltfläche wird in nativen Implementierungen des Nachrichtendialogs möglicherweise nicht berücksichtigt. Um Dialogschaltflächen anzupassen, fügen Sie stattdessen eine custom button oder button title hinzu, oder setzen Sie die Option Option::DontUseNativeDialog.

Siehe auch standardButtons und standardButton().

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

Dieses Signal wird immer dann ausgegeben, wenn ein Button innerhalb von QMessageBox angeklickt wird. Der angeklickte Button wird in button zurückgegeben.

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

Gibt die Schaltflächenrolle für die angegebene button zurück. Diese Funktion gibt InvalidRole zurück, wenn button nullptr ist oder dem Nachrichtenfeld nicht hinzugefügt wurde.

Siehe auch buttons() und addButton().

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

Gibt eine Liste aller Schaltflächen zurück, die dem Nachrichtenfeld hinzugefügt wurden.

Siehe auch buttonRole(), addButton(), und removeButton().

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

Reimplements: QWidget::changeEvent(QEvent *Event).

QCheckBox *QMessageBox::checkBox() const

Gibt das im Dialogfeld angezeigte Kontrollkästchen zurück. Dies ist nullptr, wenn kein Kontrollkästchen gesetzt ist.

Siehe auch setCheckBox().

QAbstractButton *QMessageBox::clickedButton() const

Gibt die Schaltfläche zurück, die der Benutzer angeklickt hat, oder nullptr, wenn der Benutzer die Taste Esc gedrückt hat und keine escape button gesetzt wurde.

Wenn exec() noch nicht aufgerufen wurde, wird nullptr zurückgegeben.

Beispiel:

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

Siehe auch standardButton() und button().

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

Reimplements: 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)

Öffnet eine kritische Nachrichtenbox mit den angegebenen title und text vor dem angegebenen parent Widget.

Die Standard-Schaltflächen buttons werden der Messagebox hinzugefügt. defaultButton gibt die Schaltfläche an, die verwendet wird, wenn Enter gedrückt wird. defaultButton muss sich auf eine Schaltfläche beziehen, die in buttons angegeben wurde. Wenn defaultButton QMessageBox::NoButton ist, wählt QMessageBox automatisch eine geeignete Standard-Schaltfläche.

Gibt die Identität der Standardschaltfläche zurück, die angeklickt wurde. Wurde stattdessen Esc gedrückt, wird escape button zurückgegeben.

Die Nachrichtenbox ist eine application modal Dialogbox.

Warnung: Löschen Sie parent nicht während der Ausführung des Dialogs. Wenn Sie dies tun wollen, sollten Sie das Dialogfeld selbst mit einem der QMessageBox -Konstruktoren erstellen.

Siehe auch question(), warning(), und information().

QPushButton *QMessageBox::defaultButton() const

Gibt die Schaltfläche zurück, die die Schaltfläche des Nachrichtenfeldes default button sein soll. Gibt nullptr zurück, wenn keine Standardschaltfläche festgelegt wurde.

Siehe auch setDefaultButton(), addButton(), und QPushButton::setDefault().

QAbstractButton *QMessageBox::escapeButton() const

Gibt die Taste zurück, die aktiviert wird, wenn die Escape-Taste gedrückt wird.

Standardmäßig versucht QMessageBox, eine Escape-Taste automatisch wie folgt zu erkennen:

  1. Wenn es nur eine Taste gibt, wird diese zur Escape-Taste gemacht.
  2. Wenn es eine Cancel Taste gibt, wird diese zur Escape-Taste gemacht.
  3. Nur unter macOS, wenn es genau eine Schaltfläche mit der Rolle QMessageBox::RejectRole gibt, wird diese zur Escape-Schaltfläche gemacht.

Wenn eine Escape-Taste nicht automatisch erkannt werden konnte, hat das Drücken von Esc keine Wirkung.

Siehe auch setEscapeButton() und addButton().

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

Reimplements: QWidget::event(QEvent *Event).

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

Reimplements: QDialog::exec().

Zeigt das Nachrichtenfeld als modal dialog an und blockiert es, bis der Benutzer es schließt.

Bei Verwendung von QMessageBox mit Standardschaltflächen gibt diese Funktion einen StandardButton Wert zurück, der die Standardschaltfläche angibt, auf die geklickt wurde. Bei der Verwendung von QMessageBox mit benutzerdefinierten Schaltflächen gibt diese Funktion einen undurchsichtigen Wert zurück; verwenden Sie clickedButton(), um festzustellen, welche Schaltfläche angeklickt wurde.

Hinweis: Die Funktion result() gibt auch den Wert StandardButton anstelle von QDialog::DialogCode zurück.

Benutzer können mit keinem anderen Fenster in derselben Anwendung interagieren, bis sie den Dialog schließen, entweder durch Anklicken einer Schaltfläche oder durch einen vom Fenstersystem bereitgestellten Mechanismus.

Siehe auch show() und result().

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

Öffnet ein Informationsfenster mit den angegebenen title und text vor dem angegebenen parent Widget.

Die Standard-Schaltfläche buttons wird der Nachrichtenbox hinzugefügt. defaultButton gibt die Schaltfläche an, die verwendet wird, wenn Enter gedrückt wird. defaultButton muss sich auf eine Schaltfläche beziehen, die in buttons angegeben wurde. Wenn defaultButton QMessageBox::NoButton ist, wählt QMessageBox automatisch eine geeignete Standard-Schaltfläche.

Gibt die Identität der Standardschaltfläche zurück, die angeklickt wurde. Wurde stattdessen Esc gedrückt, wird escape button zurückgegeben.

Die Nachrichtenbox ist eine application modal Dialogbox.

Warnung: Löschen Sie parent nicht während der Ausführung des Dialogs. Wenn Sie dies tun wollen, sollten Sie das Dialogfeld selbst mit einem der QMessageBox -Konstruktoren erstellen.

Siehe auch question(), warning(), und critical().

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

Reimplements: QDialog::keyPressEvent(QKeyEvent *e).

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

Öffnet den Dialog und verbindet sein finished() oder buttonClicked() Signal mit dem durch receiver und member angegebenen Slot. Wenn der Slot in member einen Zeiger für seinen ersten Parameter hat, ist die Verbindung zu buttonClicked(), andernfalls ist die Verbindung zu finished().

Das Signal wird vom Slot getrennt, wenn der Dialog geschlossen wird.

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

Öffnet ein Frage-Meldungsfeld mit den angegebenen title und text vor dem angegebenen parent Widget.

Die Standard-Schaltflächen buttons werden der Messagebox hinzugefügt. defaultButton gibt die Schaltfläche an, die verwendet wird, wenn Enter gedrückt wird. defaultButton muss sich auf eine Schaltfläche beziehen, die in buttons angegeben wurde. Wenn defaultButton QMessageBox::NoButton ist, wählt QMessageBox automatisch eine geeignete Standard-Schaltfläche.

Gibt die Identität der Standardschaltfläche zurück, die angeklickt wurde. Wurde stattdessen Esc gedrückt, wird escape button zurückgegeben.

Die Nachrichtenbox ist eine application modal Dialogbox.

Warnung: Löschen Sie parent nicht während der Ausführung des Dialogs. Wenn Sie dies tun wollen, sollten Sie das Dialogfeld selbst mit einem der QMessageBox -Konstruktoren erstellen.

Siehe auch information(), warning(), und critical().

void QMessageBox::removeButton(QAbstractButton *button)

Entfernt button aus dem Schaltflächenfeld, ohne es zu löschen.

Siehe auch addButton() und setStandardButtons().

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

Reimplements: QDialog::resizeEvent(QResizeEvent *).

void QMessageBox::setCheckBox(QCheckBox *cb)

Legt das Kontrollkästchen cb im Meldungsdialog fest. Das Meldungsfenster übernimmt das Eigentum an dem Kontrollkästchen. Das Argument cb kann nullptr sein, um ein vorhandenes Kontrollkästchen aus dem Meldungsfenster zu entfernen.

Siehe auch checkBox().

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

Setzt das Feld default button des Nachrichtenfeldes auf button.

Siehe auch defaultButton(), addButton(), und QPushButton::setDefault().

void QMessageBox::setDefaultButton(QPushButton *button)

Setzt das Feld default button des Nachrichtenfeldes auf button.

Siehe auch addButton() und QPushButton::setDefault().

void QMessageBox::setEscapeButton(QAbstractButton *button)

Setzt die Schaltfläche, die aktiviert wird, wenn die Taste Escape gedrückt wird, auf button.

Siehe auch escapeButton(), addButton(), und clickedButton().

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

Setzt die Tasten, die aktiviert werden, wenn die Taste Escape gedrückt wird, auf button.

Siehe auch addButton() und clickedButton().

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

Setzt das angegebene option auf aktiv, wenn on wahr ist; andernfalls wird das angegebene option gelöscht.

Optionen (insbesondere die Option Option::DontUseNativeDialog ) sollten gesetzt werden, bevor der Dialog angezeigt wird.

Das Setzen von Optionen, während der Dialog sichtbar ist, hat nicht garantiert eine unmittelbare Auswirkung auf den Dialog.

Das Setzen von Optionen nach dem Ändern anderer Eigenschaften kann dazu führen, dass diese Werte keine Wirkung haben.

Diese Funktion wurde in Qt 6.6 eingeführt.

Siehe auch options und testOption().

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

Diese Funktion stellt QWidget::setWindowModality() in den Schatten.

Setzt die Modalität des Meldungsfelds auf windowModality.

Unter macOS, wenn die Modalität auf Qt::WindowModal eingestellt ist und das Nachrichtenfeld ein übergeordnetes Element hat, ist das Nachrichtenfeld ein Qt::Sheet, andernfalls ist das Nachrichtenfeld ein Standarddialogfeld.

void QMessageBox::setWindowTitle(const QString &title)

Diese Funktion stellt QWidget::setWindowTitle() in den Schatten.

Setzt den Titel des Nachrichtenfensters auf title. Unter macOS wird der Fenstertitel ignoriert (wie in den macOS-Richtlinien gefordert).

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

Reimplements: QDialog::showEvent(QShowEvent *event).

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

Gibt den Enum-Wert der Standardschaltfläche zurück, der der angegebenen button entspricht, oder NoButton, wenn die angegebene button keine Standardschaltfläche ist.

Siehe auch button() und standardButtons().

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

Gibt true zurück, wenn die angegebene option aktiviert ist; andernfalls wird false zurückgegeben.

Diese Funktion wurde in Qt 6.6 eingeführt.

Siehe auch options und setOption().

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

Öffnet ein Warnmeldungsfeld mit den angegebenen title und text vor dem angegebenen parent Widget.

Die Standard-Schaltfläche buttons wird dem Meldungsfeld hinzugefügt. defaultButton gibt die Schaltfläche an, die verwendet wird, wenn Enter gedrückt wird. defaultButton muss sich auf eine Schaltfläche beziehen, die in buttons angegeben wurde. Wenn defaultButton QMessageBox::NoButton ist, wählt QMessageBox automatisch eine geeignete Vorgabe.

Gibt die Identität der Standardschaltfläche zurück, die angeklickt wurde. Wurde stattdessen Esc gedrückt, wird escape button zurückgegeben.

Die Nachrichtenbox ist eine application modal Dialogbox.

Warnung: Löschen Sie parent nicht während der Ausführung des Dialogs. Wenn Sie dies tun wollen, sollten Sie das Dialogfeld selbst mit einem der QMessageBox -Konstruktoren erstellen.

Siehe auch question(), information(), und critical().

Makro-Dokumentation

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

Dieses Makro kann verwendet werden, um sicherzustellen, dass die Anwendung mit einer ausreichend aktuellen Version von Qt ausgeführt wird. Dies ist besonders nützlich, wenn Ihre Anwendung von einer bestimmten Fehlerbehebung abhängt, die in einer Bug-Fix-Version (z.B. 6.1.2) eingeführt wurde.

Die Parameter argc und argv sind die Parameter argc und argv der Funktion main(). Der Parameter version ist ein Stringliteral, das angibt, welche Version von Qt die Anwendung benötigt (z.B. "6.1.2").

Beispiel:

#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();
}

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