En esta página

QMessageBox Class

La clase QMessageBox proporciona un diálogo modal para informar al usuario o para hacerle una pregunta y recibir una respuesta. Más...

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

Tipos Públicos

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

Propiedades

Funciones públicas

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

Ranuras públicas

virtual int exec() override

Señales

void buttonClicked(QAbstractButton *button)

Miembros públicos estáticos

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)

Funciones protegidas reimplementadas

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)

Descripción detallada

Un cuadro de mensaje muestra un text primario para alertar al usuario de una situación, un informative text para explicar con más detalle la situación, y un detailed text opcional para proporcionar aún más datos si el usuario lo solicita.

Un cuadro de mensaje también puede mostrar un icon y un standard buttons para aceptar una respuesta del usuario.

Aunque el parámetro parent es opcional, especificarlo da una pista al gestor de ventanas, que puede entonces encargarse del posicionamiento y mantener un orden de apilamiento adecuado de la ventana de diálogo.

Se proporcionan dos API para utilizar QMessageBox, la API basada en propiedades y las funciones estáticas. Llamar a una de las funciones estáticas es el enfoque más simple, pero es menos flexible que usar la API basada en propiedades, y el resultado es menos informativo. Se recomienda utilizar la API basada en propiedades.

La API basada en propiedades

Para utilizar la API basada en propiedades, construya una instancia de QMessageBox, establezca las propiedades deseadas y llame a exec() para mostrar el mensaje. La configuración más sencilla es establecer sólo la propiedad message text.

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

El usuario debe hacer clic en el botón OK para salir del cuadro de mensaje. El resto de la interfaz gráfica de usuario se bloquea hasta que se expulsa el cuadro de mensaje.

Cuadro de mensaje con un mensaje sencillo y un botón OK

Un enfoque mejor que simplemente alertar al usuario de un evento es también preguntarle qué hacer al respecto.

Establezca la propiedad standard buttons al conjunto de botones que desee como el conjunto de respuestas del usuario. Los botones se especifican combinando los valores de StandardButtons mediante el operador bitwise OR. El orden de visualización de los botones depende de la plataforma. Por ejemplo, en Windows, Save se muestra a la izquierda de Cancel, mientras que en macOS, el orden es inverso. Marque uno de sus botones estándar para que sea su default button.

La propiedad informative text puede utilizarse para añadir contexto adicional que ayude al usuario a elegir la acción adecuada.

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

Cuadro de mensaje con los botones "Guardar", "No guardar" y "Cancelar".

La ranura exec() devuelve el valor StandardButtons del botón sobre el que se ha hecho clic.

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

Para dar al usuario más información que le ayude a elegir la acción apropiada, establezca la propiedad detailed text. Dependiendo de la plataforma el detailed text, puede requerir que el usuario haga clic en un botón Show Details... para ser mostrado.

Guardar cuadro de mensaje con un botón "Mostrar detalles...".

Al hacer clic en el botón Show Details... se muestra el texto detallado.

Guardar el cuadro de mensaje con el texto detallado

Texto enriquecido y la propiedad de formato de texto

La propiedad detailed text se interpreta siempre como texto sin formato. Las propiedades main text y informative text pueden ser texto plano o texto enriquecido. Estas cadenas se interpretan según la configuración de la propiedad text format. El valor por defecto es auto-text.

Tenga en cuenta que para algunas cadenas de texto sin formato que contienen metacaracteres XML, el autotexto rich text detection test puede fallar haciendo que su cadena de texto sin formato se interprete incorrectamente como texto enriquecido. En estos raros casos, utilice Qt::convertFromPlainText() para convertir su cadena de texto plano en una cadena de texto enriquecido visualmente equivalente, o establezca la propiedad text format explícitamente con setTextFormat().

Niveles de Gravedad y las Propiedades Icono y Pixmap

QMessageBox soporta cuatro niveles predefinidos de severidad de mensaje, o tipos de mensaje, que realmente sólo difieren en el icono predefinido que cada uno muestra. Especifique uno de los cuatro tipos de mensaje predefinidos estableciendo la propiedad icon a uno de los predefined icons. Las siguientes reglas son directrices:

Icono de interrogación

QuestionPara hacer una pregunta durante las operaciones normales.

Icono de información

InformationPara comunicar información sobre el funcionamiento normal.

Icono de advertencia

WarningPara informar de errores no críticos.

Icono de problema crítico

CriticalPara informar de errores críticos.

Predefined icons no están definidas por QMessageBox, sino que las proporciona el estilo. El valor por defecto es No Icon. Por lo demás, los cuadros de mensaje son los mismos en todos los casos. Cuando utilice un icono estándar, utilice el recomendado en la tabla, o utilice el recomendado por las directrices de estilo para su plataforma. Si ninguno de los iconos estándar es adecuado para su cuadro de mensaje, puede utilizar un icono personalizado estableciendo la propiedad icon pixmap en lugar de establecer la propiedad icon.

En resumen, para establecer un icono, utiliza setIcon() para uno de los iconos estándar , o setIconPixmap() para un icono personalizado.

La API de funciones estáticas

La creación de cuadros de mensaje con la API de funciones estáticas, aunque práctica, es menos flexible que el uso de la API basada en propiedades, porque las firmas de funciones estáticas carecen de parámetros para establecer las propiedades informative text y detailed text. Una solución para esto ha sido utilizar el parámetro title como texto principal del cuadro de mensaje y el parámetro text como texto informativo del cuadro de mensaje. Debido a que esto tiene la desventaja obvia de hacer un cuadro de mensaje menos legible, las directrices de la plataforma no lo recomiendan. Las Directrices de Interfaz de Usuario de Microsoft Windows recomiendan utilizar el parámetro application name como window's title, lo que significa que si tiene un texto informativo además del texto principal, debe concatenarlo con el parámetro text.

Tenga en cuenta que las firmas de las funciones estáticas han cambiado con respecto a sus parámetros de botón, que ahora se utilizan para establecer el standard buttons y el default button.

Existen funciones estáticas para crear los cuadros de diálogo information(), question(), warning() y 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);

El ejemplo de Diálogos Estándar muestra cómo utilizar QMessageBox y los otros diálogos Qt incorporados.

Uso Avanzado

Si standard buttons no es lo suficientemente flexible para su cuadro de mensaje, puede utilizar la sobrecarga addButton() que toma un texto y un ButtonRole para añadir botones personalizados. El ButtonRole es utilizado por QMessageBox para determinar el orden de los botones en pantalla (que varía según la plataforma). Puedes comprobar el valor de clickedButton() después de llamar a exec(). Por ejemplo,

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
}

Teclas por defecto y Escape

El botón por defecto (es decir, el botón que se activa al pulsar Enter ) puede especificarse mediante setDefaultButton(). Si no se especifica un botón predeterminado, QMessageBox trata de encontrar uno basándose en button roles de los botones utilizados en el cuadro de mensaje.

El botón de escape (el botón que se activa cuando se presiona Esc ) puede especificarse usando setEscapeButton(). Si no se especifica un botón de escape, QMessageBox trata de encontrar uno usando estas reglas:

  1. Si sólo hay un botón, es el botón que se activa cuando se pulsa Esc.
  2. Si hay un botón Cancel, es el botón que se activa cuando se pulsa Esc.
  3. Si hay exactamente un botón que tenga the Reject role o the No role, es el botón que se activa cuando se pulsa Esc.

Cuando no se puede determinar un botón de escape utilizando estas reglas, pulsar Esc no tiene ningún efecto.

Véase también QDialogButtonBox y Ejemplo de diálogos estándar.

Documentación de tipos de miembros

enum QMessageBox::ButtonRole

Este enum describe los roles que se pueden utilizar para describir los botones de la caja de botones. Las combinaciones de estos roles son como banderas utilizadas para describir diferentes aspectos de su comportamiento.

ConstanteValorDescripción
QMessageBox::InvalidRole-1El botón no es válido.
QMessageBox::AcceptRole0Al hacer clic en el botón, se acepta el diálogo (p. ej., Aceptar).
QMessageBox::RejectRole1Al hacer clic en el botón se rechaza el diálogo (por ejemplo, Cancelar).
QMessageBox::DestructiveRole2Al hacer clic en el botón se produce un cambio destructivo (p. ej., para descartar cambios) y se cierra la ventana de diálogo.
QMessageBox::ActionRole3Pulsar el botón provoca cambios en los elementos del diálogo.
QMessageBox::HelpRole4Se puede pulsar el botón para solicitar ayuda.
QMessageBox::YesRole5El botón es del tipo "Sí".
QMessageBox::NoRole6El botón es similar a "No".
QMessageBox::ApplyRole8El botón aplica los cambios actuales.
QMessageBox::ResetRole7El botón restablece los valores predeterminados de los campos del cuadro de diálogo.

Véase también StandardButton.

enum QMessageBox::Icon

Este enum tiene los siguientes valores:

ConstanteValorDescripción
QMessageBox::NoIcon0el cuadro de mensaje no tiene ningún icono.
QMessageBox::Question4un icono que indica que el mensaje es una pregunta.
QMessageBox::Information1un icono que indica que el mensaje no es nada fuera de lo normal.
QMessageBox::Warning2un icono que indica que el mensaje es una advertencia, pero que puede solucionarse.
QMessageBox::Critical3un icono que indica que el mensaje representa un problema crítico.

[since 6.6] enum class QMessageBox::Opción
flags QMessageBox::Opciones

ConstanteValorDescripción
QMessageBox::Option::DontUseNativeDialog0x00000001No usar el diálogo de mensajes nativo.

Este enum se introdujo en Qt 6.6.

El tipo Options es un typedef para QFlags<Option>. Almacena una combinación OR de valores Option.

enum QMessageBox::StandardButton
flags QMessageBox::StandardButtons

Estos enums describen las banderas de los botones estándar. Cada botón tiene definida una ButtonRole.

ConstanteValorDescripción
QMessageBox::Ok0x00000400Botón "OK" definido con el parámetro AcceptRole.
QMessageBox::Open0x00002000Botón "Abrir" definido en AcceptRole.
QMessageBox::Save0x00000800Botón "Guardar" definido en AcceptRole.
QMessageBox::Cancel0x00400000Botón "Cancelar" definido en RejectRole.
QMessageBox::Close0x00200000Botón "Cerrar" definido en RejectRole.
QMessageBox::Discard0x00800000Un botón "Descartar" o "No guardar", según la plataforma, definido en DestructiveRole.
QMessageBox::Apply0x02000000Un botón "Aplicar" definido en ApplyRole.
QMessageBox::Reset0x04000000Un botón "Restablecer" definido en ResetRole.
QMessageBox::RestoreDefaults0x08000000Un botón "Restaurar valores predeterminados" definido en ResetRole.
QMessageBox::Help0x01000000Botón "Ayuda" definido en HelpRole.
QMessageBox::SaveAll0x00001000Botón "Guardar todo" definido en AcceptRole.
QMessageBox::Yes0x00004000Botón "Sí" definido en YesRole.
QMessageBox::YesToAll0x00008000Botón "Sí a todo" definido en YesRole.
QMessageBox::No0x00010000Botón "No" definido en NoRole.
QMessageBox::NoToAll0x00020000Botón "No a todo" definido en NoRole.
QMessageBox::Abort0x00040000Botón "Abortar" definido en RejectRole.
QMessageBox::Retry0x00080000Botón "Reintentar" definido en AcceptRole.
QMessageBox::Ignore0x00100000Botón "Ignorar" definido en AcceptRole.
QMessageBox::NoButton0x00000000Un botón no válido.

Los siguientes valores son obsoletos:

ConstanteValorDescripción
QMessageBox::YesAllYesToAllUtilice YesToAll en su lugar.
QMessageBox::NoAllNoToAllUtilice NoToAll en su lugar.
QMessageBox::Default0x00000100Utilice en su lugar el argumento defaultButton de information(), warning(), etc., o llame a setDefaultButton().
QMessageBox::Escape0x00000200Llame a setEscapeButton() en su lugar.
QMessageBox::FlagMask0x00000300
QMessageBox::ButtonMask~FlagMask

El tipo StandardButtons es un typedef para QFlags<StandardButton>. Almacena una combinación OR de valores StandardButton.

Ver también ButtonRole y standardButtons.

Documentación de Propiedades

detailedText : QString

Esta propiedad contiene el texto que se mostrará en el área de detalles.

El texto se interpretará como texto plano.

Por defecto, esta propiedad contiene una cadena vacía.

Funciones de acceso:

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

Véase también QMessageBox::text y QMessageBox::informativeText.

icon : Icon

Esta propiedad contiene el icono del buzón de mensajes

El icono del buzón de mensajes puede especificarse con uno de los valores:

El valor por defecto es QMessageBox::NoIcon.

El mapa de píxeles utilizado para mostrar el icono actual depende de GUI style. También puede establecer un mapa de píxeles personalizado para el icono estableciendo la propiedad icon pixmap.

Funciones de acceso:

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

Véase también iconPixmap.

iconPixmap : QPixmap

Esta propiedad contiene el icono actual

El icono utilizado actualmente por el cuadro de mensaje. Tenga en cuenta que a menudo es difícil dibujar un pixmap que se vea apropiado en todos los estilos de GUI; puede que quiera proporcionar un pixmap diferente para cada plataforma.

Por defecto, esta propiedad no está definida.

Funciones de acceso:

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

Véase también icon.

informativeText : QString

Esta propiedad contiene el texto informativo que proporciona una descripción más completa del mensaje.

El texto informativo puede utilizarse para ampliar la información de text() y ofrecer más información al usuario, por ejemplo, describiendo las consecuencias de la situación o sugiriendo soluciones alternativas.

El texto se interpretará como texto sin formato o como texto enriquecido, dependiendo de la configuración del formato de texto (QMessageBox::textFormat). La configuración por defecto es Qt::AutoText, es decir, el cuadro de mensaje intentará autodetectar el formato del texto.

Por defecto, esta propiedad contiene una cadena vacía.

Funciones de acceso:

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

Véase también textFormat, QMessageBox::text, y QMessageBox::detailedText.

[since 6.6] options : Options

Opciones que afectan al aspecto del diálogo.

Por defecto, estas opciones están desactivadas.

La opción Option::DontUseNativeDialog debe configurarse antes de cambiar las propiedades del cuadro de diálogo o de mostrarlo.

No se garantiza que la configuración de opciones mientras el cuadro de diálogo está visible tenga un efecto inmediato sobre el mismo.

Establecer opciones después de cambiar otras propiedades puede hacer que estos valores no tengan efecto.

Esta propiedad se introdujo en Qt 6.6.

Funciones de acceso:

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

Véase también setOption() y testOption().

standardButtons : StandardButtons

Colección de botones estándar del cuadro de mensaje

Esta propiedad controla qué botones estándar utiliza el cuadro de mensaje.

Por defecto, esta propiedad no contiene ningún botón estándar.

Funciones de acceso:

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

Véase también addButton().

text : QString

Esta propiedad contiene el texto del cuadro de mensaje que se mostrará.

El texto debe ser una breve frase u oración que describa la situación, idealmente formulada como una declaración neutral, o una pregunta de llamada a la acción.

El texto se interpretará como texto sin formato o como texto enriquecido, dependiendo de la configuración del formato de texto (QMessageBox::textFormat). La configuración por defecto es Qt::AutoText, es decir, el cuadro de mensaje intentará autodetectar el formato del texto.

El valor por defecto de esta propiedad es una cadena vacía.

Funciones de acceso:

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

Véase también textFormat, QMessageBox::informativeText, y QMessageBox::detailedText.

textFormat : Qt::TextFormat

Esta propiedad contiene el formato del texto mostrado por el cuadro de mensaje

El formato de texto actual utilizado por el cuadro de mensaje. Véase el enum Qt::TextFormat para una explicación de las posibles opciones.

El formato por defecto es Qt::AutoText.

Funciones de acceso:

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

Véase también setText().

textInteractionFlags : Qt::TextInteractionFlags

Especifica cómo debe interactuar la etiqueta del cuadro de mensaje con la entrada del usuario.

El valor por defecto depende del estilo.

Funciones de acceso:

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

Véase también QStyle::SH_MessageBox_TextInteractionFlags.

Documentación de las funciones miembro

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

Construye un cuadro de mensaje application modal sin texto ni botones. parent se pasa al constructor QDialog.

La modalidad de la ventana puede anularse mediante setWindowModality() antes de llamar a show().

Nota: El uso de open() o exec() para mostrar el cuadro de mensaje afecta a la modalidad de la ventana. Para más información, consulte la documentación detallada de cada función.

En macOS, si desea que su cuadro de mensaje aparezca como un Qt::Sheet de su parent, establezca el window modality del cuadro de mensaje en Qt::WindowModal o utilice open(). De lo contrario, el cuadro de mensaje será un cuadro de diálogo estándar.

Véase también setWindowTitle(), setText(), setIcon(), setStandardButtons() y 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)

Construye un cuadro de mensaje application modal con los campos icon, title, text, y estándar buttons. Se pueden añadir botones estándar o personalizados en cualquier momento utilizando addButton(). Los argumentos parent y f se pasan al constructor QDialog.

La modalidad de la ventana puede anularse mediante setWindowModality() antes de llamar a show().

Nota: El uso de open() o exec() para mostrar el cuadro de mensaje afecta a la modalidad de la ventana. Para más información, consulte la documentación detallada de cada función.

En macOS, si parent no es nullptr y desea que su cuadro de mensaje aparezca como un Qt::Sheet de ese padre, establezca el window modality del cuadro de mensaje en Qt::WindowModal (por defecto). De lo contrario, el cuadro de mensaje será un cuadro de diálogo estándar.

Véase también setWindowTitle(), setText(), setIcon(), setStandardButtons() y setWindowModality().

[virtual noexcept] QMessageBox::~QMessageBox()

Destruye el buzón de mensajes.

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

Muestra un simple cuadro "Acerca de" con el título title y el texto text. El padre de la caja about es parent.

about() busca un icono adecuado en cuatro ubicaciones:

  1. Prefiere parent->icon() si existe.
  2. Si no, lo intenta en el widget de nivel superior que contiene parent.
  3. Si falla, lo intenta con el widget active window.
  4. Como último recurso, utiliza el icono Información.

El cuadro "Acerca de" tiene un único botón llamado "Aceptar".

En macOS, el cuadro "Acerca de" aparece como una ventana sin modelo; en otras plataformas, actualmente es una aplicación modal.

Véase también QWidget::windowIcon() y QApplication::activeWindow().

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

Muestra un cuadro de mensaje simple sobre Qt, con el title dado y centrado sobre parent (si parent no es nullptr). El mensaje incluye el número de versión de Qt que utiliza la aplicación.

Esto es útil para incluirlo en el menú Help de una aplicación, como se muestra en el ejemplo Menús.

QApplication proporciona esta funcionalidad como una ranura.

En macOS, el cuadro aboutQt aparece como una ventana sin modelo; en otras plataformas, actualmente es modal de la aplicación.

Véase también QApplication::aboutQt().

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

Añade el button dado al cuadro de mensaje con el role especificado.

Véase también removeButton(), button() y setStandardButtons().

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

Añade un button estándar al cuadro de mensaje si es válido hacerlo, y devuelve el pulsador.

Se trata de una función sobrecargada.

Véase también setStandardButtons().

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

Crea un botón con el text dado , lo añade al cuadro de mensaje para el role especificado , y lo devuelve.

Se trata de una función sobrecargada.

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

Devuelve un puntero correspondiente al botón estándar which, o nullptr si el botón estándar no existe en este cuadro de mensaje.

Nota: La modificación de las propiedades del botón devuelto puede no reflejarse en las implementaciones nativas del cuadro de diálogo de mensajes. Para personalizar los botones del cuadro de diálogo, añada un custom button o button title en su lugar, o establezca la opción Option::DontUseNativeDialog.

Véase también standardButtons y standardButton().

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

Esta señal se emite cada vez que se pulsa un botón dentro de QMessageBox. El botón pulsado se devuelve en button.

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

Devuelve la función de botón para el button especificado. Esta función devuelve InvalidRole si button es nullptr o no se ha añadido al cuadro de mensaje.

Véase también buttons() y addButton().

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

Devuelve una lista de todos los botones que se han añadido al cuadro de mensaje.

Véase también buttonRole(), addButton() y removeButton().

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

Reimplementa: QWidget::changeEvent(QEvent *event).

QCheckBox *QMessageBox::checkBox() const

Devuelve la casilla de verificación mostrada en el diálogo. Es nullptr si no se ha establecido ninguna casilla de verificación.

Véase también setCheckBox().

QAbstractButton *QMessageBox::clickedButton() const

Devuelve el botón que fue pulsado por el usuario, o nullptr si el usuario pulsó la tecla Esc y no se estableció escape button.

Si todavía no se ha llamado a exec(), devuelve nullptr.

Ejemplo:

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

Véase también standardButton() y button().

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

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

Abre un cuadro de mensaje crítico con los campos title y text delante del widget parent especificado.

Los botones estándar buttons se añaden al cuadro de mensaje. defaultButton especifica el botón que se utiliza cuando se pulsa Enter. defaultButton debe referirse a un botón que se haya dado en buttons. Si defaultButton es QMessageBox::NoButton, QMessageBox elige automáticamente un predeterminado adecuado.

Devuelve la identidad del botón estándar que se pulsó. Si en su lugar se pulsó Esc, se devuelve escape button.

El cuadro de mensaje es un cuadro de diálogo application modal.

Advertencia: No borre parent durante la ejecución del cuadro de diálogo. Si desea hacerlo, debe crear el cuadro de diálogo usted mismo utilizando uno de los constructores de QMessageBox.

Véase también question(), warning(), y information().

QPushButton *QMessageBox::defaultButton() const

Devuelve el botón que debería ser el del cuadro de mensaje default button. Devuelve nullptr si no se ha establecido ningún botón por defecto.

Véase también setDefaultButton(), addButton() y QPushButton::setDefault().

QAbstractButton *QMessageBox::escapeButton() const

Devuelve el botón que se activa cuando se pulsa escape.

Por defecto, QMessageBox intenta detectar automáticamente un botón de escape de la siguiente manera:

  1. Si sólo hay un botón, se convierte en el botón de escape.
  2. Si hay un botón Cancel, se convierte en el botón de escape.
  3. Sólo en macOS, si hay exactamente un botón con el rol QMessageBox::RejectRole, se convierte en el botón de escape.

Cuando no se puede detectar automáticamente un botón de escape, pulsar Esc no tiene ningún efecto.

Véase también setEscapeButton() y addButton().

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

Reimplementa: QWidget::event(QEvent *event).

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

Reimplementa: QDialog::exec().

Muestra el cuadro de mensaje como un modal dialog, bloqueándose hasta que el usuario lo cierra.

Cuando se utiliza QMessageBox con botones estándar, esta función devuelve un valor StandardButton que indica el botón estándar sobre el que se ha hecho clic. Cuando se utiliza QMessageBox con botones personalizados, esta función devuelve un valor opaco; utilice clickedButton() para determinar qué botón fue pulsado.

Nota: La función result() devuelve también el valor StandardButton en lugar de QDialog::DialogCode.

Los usuarios no pueden interactuar con ninguna otra ventana de la misma aplicación hasta que cierren el cuadro de diálogo, ya sea haciendo clic en un botón o utilizando un mecanismo proporcionado por el sistema de ventanas.

Véase también show() y result().

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

Abre un cuadro de mensaje informativo con los campos title y text delante del widget parent especificado.

Los botones estándar buttons se añaden al cuadro de mensaje. defaultButton especifica el botón que se utiliza cuando se pulsa Enter. defaultButton debe referirse a un botón que se haya dado en buttons. Si defaultButton es QMessageBox::NoButton, QMessageBox elige automáticamente un predeterminado adecuado.

Devuelve la identidad del botón estándar que se pulsó. Si en su lugar se pulsó Esc, se devuelve escape button.

El cuadro de mensaje es un cuadro de diálogo application modal.

Advertencia: No borre parent durante la ejecución del cuadro de diálogo. Si desea hacerlo, debe crear el cuadro de diálogo usted mismo utilizando uno de los constructores de QMessageBox.

Véase también question(), warning(), y critical().

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

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

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

Abre el diálogo y conecta su señal finished() o buttonClicked() a la ranura especificada por receiver y member. Si la ranura en member tiene un puntero como primer parámetro, la conexión se realiza a buttonClicked(); en caso contrario, la conexión se realiza a finished().

La señal se desconectará de la ranura cuando se cierre el diálogo.

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

Abre un cuadro de mensaje de pregunta con los campos title y text delante del widget parent especificado.

Los botones estándar buttons se añaden al cuadro de mensaje. defaultButton especifica el botón que se utiliza cuando se pulsa Enter. defaultButton debe referirse a un botón que se haya dado en buttons. Si defaultButton es QMessageBox::NoButton, QMessageBox elige un predeterminado adecuado automáticamente.

Devuelve la identidad del botón estándar que se pulsó. Si en su lugar se pulsó Esc, se devuelve escape button.

El cuadro de mensaje es un cuadro de diálogo application modal.

Advertencia: No borre parent durante la ejecución del cuadro de diálogo. Si desea hacerlo, debe crear el cuadro de diálogo usted mismo utilizando uno de los constructores de QMessageBox.

Véase también information(), warning(), y critical().

void QMessageBox::removeButton(QAbstractButton *button)

Elimina button de la caja de botones sin borrarlo.

Véase también addButton() y setStandardButtons().

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

Reimplementa: QDialog::resizeEvent(QResizeEvent *).

void QMessageBox::setCheckBox(QCheckBox *cb)

Establece la casilla de verificación cb en el cuadro de diálogo de mensaje. El cuadro de mensaje toma posesión de la casilla de verificación. El argumento cb puede ser nullptr para eliminar una casilla de verificación existente del cuadro de mensaje.

Véase también checkBox().

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

Establece la dirección default button del cuadro de mensaje en button.

Véase también defaultButton(), addButton() y QPushButton::setDefault().

void QMessageBox::setDefaultButton(QPushButton *button)

Establece la dirección default button del cuadro de mensaje en button.

Véase también addButton() y QPushButton::setDefault().

void QMessageBox::setEscapeButton(QAbstractButton *button)

Establece el botón que se activa cuando se pulsa la tecla Escape en button.

Véase también escapeButton(), addButton() y clickedButton().

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

Establece los botones que se activan cuando se pulsa la tecla Escape en button.

Véase también addButton() y clickedButton().

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

Habilita la opción option si on es verdadero; en caso contrario, borra la opción option.

Las opciones (en particular la opción Option::DontUseNativeDialog ) deben establecerse antes de mostrar el diálogo.

Si se establecen las opciones mientras el diálogo está visible, no se garantiza que tengan un efecto inmediato en el diálogo.

Establecer opciones después de cambiar otras propiedades puede hacer que estos valores no tengan efecto.

Esta función se introdujo en Qt 6.6.

Véase también options y testOption().

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

Esta función hace sombra a QWidget::setWindowModality().

Establece la modalidad del cuadro de mensaje en windowModality.

En macOS, si la modalidad se establece en Qt::WindowModal y el cuadro de mensaje tiene un padre, entonces el cuadro de mensaje será un Qt::Sheet, de lo contrario el cuadro de mensaje será un cuadro de diálogo estándar.

void QMessageBox::setWindowTitle(const QString &title)

Esta función hace sombra a QWidget::setWindowTitle().

Establece el título del cuadro de mensaje en title. En macOS, se ignora el título de la ventana (tal y como exigen las Directrices de macOS).

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

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

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

Devuelve el valor enum del botón estándar correspondiente a button, o NoButton si button no es un botón estándar.

Véase también button() y standardButtons().

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

Devuelve true si el option dado está habilitado; en caso contrario, devuelve false.

Esta función se introdujo en Qt 6.6.

Véase también options y setOption().

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

Abre un cuadro de mensaje de advertencia con los datos title y text delante del widget parent especificado.

Los botones estándar buttons se añaden al cuadro de mensaje. defaultButton especifica el botón que se utiliza cuando se pulsa Enter. defaultButton debe referirse a un botón que se haya dado en buttons. Si defaultButton es QMessageBox::NoButton, QMessageBox elige un predeterminado adecuado automáticamente.

Devuelve la identidad del botón estándar que se pulsó. Si en su lugar se pulsó Esc, se devuelve escape button.

El cuadro de mensaje es un cuadro de diálogo application modal.

Advertencia: No borre parent durante la ejecución del cuadro de diálogo. Si desea hacerlo, debe crear el cuadro de diálogo usted mismo utilizando uno de los constructores de QMessageBox.

Véase también question(), information(), y critical().

Documentación de macros

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

Esta macro puede utilizarse para garantizar que la aplicación se ejecuta con una versión de Qt lo suficientemente reciente. Esto es especialmente útil si su aplicación depende de una corrección de errores específica introducida en una versión de corrección de errores (por ejemplo, 6.1.2).

Los parámetros argc y argv son los parámetros argc y argv de la función main(). El parámetro version es una cadena literal que especifica qué versión de Qt requiere la aplicación (por ejemplo, "6.1.2").

Ejemplo:

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