[c++] Cuadro de mensaje Sí / No con QMessageBox



Answers

Puede usar el objeto QMessage para crear un cuadro de mensaje y luego agregar botones:

QMessageBox msgBox;
msgBox.setWindowTitle("title");
msgBox.setText("Question");
msgBox.setStandardButtons(QMessageBox::Yes);
msgBox.addButton(QMessageBox::No);
msgBox.setDefaultButton(QMessageBox::No);
if(msgBox.exec() == QMessageBox::Yes){
  // do something
}else {
  // do something else
}
Question

¿Cómo se muestra un cuadro de mensaje con los botones Sí / No en Qt y cómo puedo verificar cuál de ellos se presionó?

Es decir, un cuadro de mensaje que se ve así:




Me falta la traducción llamada tr en las respuestas.

Una de las soluciones más simples, que permite una internacionalización posterior:

if (QMessageBox::Yes == QMessageBox::question(this,
                                              tr("title"),
                                              tr("Message/Question")))
{
    // do stuff
}

En general, es un buen hábito de Qt poner cadenas de nivel de código dentro de una llamada tr("Your String") .

( QMessagebox como el anterior funciona dentro de cualquier método de QWidget )

EDITAR:

puede usar QMesssageBox fuera de un contexto de QWidget , consulte la respuesta de @ TobySpeight.

Si está incluso fuera de un contexto de QObject , reemplace tr con qApp->translate("context", "String") - necesitará #include <QApplication>






Related