¿Cómo muestro un cuadro de mensaje con botones Sí / No en Qt y cómo verifico cuál de ellos se presionó?
Es decir, un cuadro de mensaje que se ve así:
c++
qt
qmessagebox
sashoalm
fuente
fuente
Puede usar el objeto QMessage para crear un cuadro de mensaje y luego agregar botones:
fuente
setIcon
método como parte delQMessageBox
objeto. con uno si estas enumeraciones como parámetros:QMessageBox::NoIcon
QMessageBox::Question
QMessageBox::Information
doc.qt.io/qt-4.8/qmessagebox.html#icon-propQT puede ser tan simple como el de Windows. El código equivalente es
fuente
Me falta la llamada de traducción
tr
en las respuestas.Una de las soluciones más sencillas, que permite una posterior internacionalización:
En general, es un buen
Qt
hábito colocar cadenas a nivel de código dentro de unatr("Your String")
llamada.(
QMessagebox
como arriba funciona dentro de cualquierQWidget
método)EDITAR:
puede usar
QMesssageBox
fuera de unQWidget
contexto, consulte la respuesta de @ TobySpeight.Incluso si está fuera de un
QObject
contexto, reemplacetr
conqApp->translate("context", "String")
- necesitará#include <QApplication>
fuente
QMessageBox
incluye métodos estáticos para hacer rápidamente tales preguntas:Si sus necesidades son más complejas que las previstas por los métodos estáticos, debe construir un nuevo
QMessageBox
objeto y llamar a suexec()
método para mostrarlo en su propio bucle de eventos y obtener el identificador del botón presionado. Por ejemplo, podríamos querer que "No" sea la respuesta predeterminada:fuente
QApplication
, sugiero usarqApp->translate("context", "String")
, que reemplazatr
para el uso fuera de unaQObject
claseSi desea hacerlo en Python, debe verificar este código en su banco de trabajo. también escribe así. Creamos un cuadro emergente con Python.
fuente