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 |
- Lista de todos los miembros, incluidos los heredados
- Miembros obsoletos
- QMessageBox es parte de Standard Dialogs.
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.

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

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.

Al hacer clic en el botón Show Details... se muestra 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:
| Question | Para hacer una pregunta durante las operaciones normales. |
| Information | Para comunicar información sobre el funcionamiento normal. |
| Warning | Para informar de errores no críticos. |
| Critical | Para 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:
- Si sólo hay un botón, es el botón que se activa cuando se pulsa Esc.
- Si hay un botón Cancel, es el botón que se activa cuando se pulsa Esc.
- 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.
| Constante | Valor | Descripción |
|---|---|---|
QMessageBox::InvalidRole | -1 | El botón no es válido. |
QMessageBox::AcceptRole | 0 | Al hacer clic en el botón, se acepta el diálogo (p. ej., Aceptar). |
QMessageBox::RejectRole | 1 | Al hacer clic en el botón se rechaza el diálogo (por ejemplo, Cancelar). |
QMessageBox::DestructiveRole | 2 | Al 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::ActionRole | 3 | Pulsar el botón provoca cambios en los elementos del diálogo. |
QMessageBox::HelpRole | 4 | Se puede pulsar el botón para solicitar ayuda. |
QMessageBox::YesRole | 5 | El botón es del tipo "Sí". |
QMessageBox::NoRole | 6 | El botón es similar a "No". |
QMessageBox::ApplyRole | 8 | El botón aplica los cambios actuales. |
QMessageBox::ResetRole | 7 | El 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:
| Constante | Valor | Descripción |
|---|---|---|
QMessageBox::NoIcon | 0 | el cuadro de mensaje no tiene ningún icono. |
QMessageBox::Question | 4 | un icono que indica que el mensaje es una pregunta. |
QMessageBox::Information | 1 | un icono que indica que el mensaje no es nada fuera de lo normal. |
QMessageBox::Warning | 2 | un icono que indica que el mensaje es una advertencia, pero que puede solucionarse. |
QMessageBox::Critical | 3 | un icono que indica que el mensaje representa un problema crítico. |
[since 6.6] enum class QMessageBox::Opción
flags QMessageBox::Opciones
| Constante | Valor | Descripción |
|---|---|---|
QMessageBox::Option::DontUseNativeDialog | 0x00000001 | No 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.
| Constante | Valor | Descripción |
|---|---|---|
QMessageBox::Ok | 0x00000400 | Botón "OK" definido con el parámetro AcceptRole. |
QMessageBox::Open | 0x00002000 | Botón "Abrir" definido en AcceptRole. |
QMessageBox::Save | 0x00000800 | Botón "Guardar" definido en AcceptRole. |
QMessageBox::Cancel | 0x00400000 | Botón "Cancelar" definido en RejectRole. |
QMessageBox::Close | 0x00200000 | Botón "Cerrar" definido en RejectRole. |
QMessageBox::Discard | 0x00800000 | Un botón "Descartar" o "No guardar", según la plataforma, definido en DestructiveRole. |
QMessageBox::Apply | 0x02000000 | Un botón "Aplicar" definido en ApplyRole. |
QMessageBox::Reset | 0x04000000 | Un botón "Restablecer" definido en ResetRole. |
QMessageBox::RestoreDefaults | 0x08000000 | Un botón "Restaurar valores predeterminados" definido en ResetRole. |
QMessageBox::Help | 0x01000000 | Botón "Ayuda" definido en HelpRole. |
QMessageBox::SaveAll | 0x00001000 | Botón "Guardar todo" definido en AcceptRole. |
QMessageBox::Yes | 0x00004000 | Botón "Sí" definido en YesRole. |
QMessageBox::YesToAll | 0x00008000 | Botón "Sí a todo" definido en YesRole. |
QMessageBox::No | 0x00010000 | Botón "No" definido en NoRole. |
QMessageBox::NoToAll | 0x00020000 | Botón "No a todo" definido en NoRole. |
QMessageBox::Abort | 0x00040000 | Botón "Abortar" definido en RejectRole. |
QMessageBox::Retry | 0x00080000 | Botón "Reintentar" definido en AcceptRole. |
QMessageBox::Ignore | 0x00100000 | Botón "Ignorar" definido en AcceptRole. |
QMessageBox::NoButton | 0x00000000 | Un botón no válido. |
Los siguientes valores son obsoletos:
| Constante | Valor | Descripción |
|---|---|---|
QMessageBox::YesAll | YesToAll | Utilice YesToAll en su lugar. |
QMessageBox::NoAll | NoToAll | Utilice NoToAll en su lugar. |
QMessageBox::Default | 0x00000100 | Utilice en su lugar el argumento defaultButton de information(), warning(), etc., o llame a setDefaultButton(). |
QMessageBox::Escape | 0x00000200 | Llame a setEscapeButton() en su lugar. |
QMessageBox::FlagMask | 0x00000300 | |
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:
- QMessageBox::NoIcon
- QMessageBox::Question
- QMessageBox::Information
- QMessageBox::Warning
- QMessageBox::Critical
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:
- Prefiere parent->icon() si existe.
- Si no, lo intenta en el widget de nivel superior que contiene parent.
- Si falla, lo intenta con el widget active window.
- 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:
- Si sólo hay un botón, se convierte en el botón de escape.
- Si hay un botón Cancel, se convierte en el botón de escape.
- 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.



