¿Eliminar la barra de título de QMessageBox cuando se usa el método estático QMessageBox::information()?

Para mostrar un cuadro de mensaje utilizo este código:

int ret = QMessageBox::question(this,"Title","Stupid code",QMessageBox::Yes | QMessageBox::No);

Todo funciona como se esperaba, pero ahora quiero eliminar la barra de título del cuadro de mensaje. ¿Cómo puedo conseguir esto?

No quiero usar:

QMessageBox msgBox("Title" , "Stupid code", QMessageBox::Question, QMessageBox::Yes | QMessageBox::No, this, Qt::FramelessWindowHint);
msgBox.exec();

preguntado el 15 de mayo de 13 a las 04:05

¿Probó QMessageBox msgBox("" , "Código estúpido", QMessageBox::Question, QMessageBox::Sí | QMessageBox::No, this, Qt::FramelessWindowHint); -

No quiero hacer eso (dije en el p/s). @_@-

¿Cuál es la razón para no querer usar el método sugerido por @Arun? -

Todos en nuestro proyecto usan la API estática. Pero ahora queremos decorar la ventana. Si usa la sugerencia de @Arun, necesitamos cambiar una gran cantidad de código de línea @_@ -

1 Respuestas

Le sugiero que cree una función contenedora creando su propia XMessageBox clase con una función miembro estática question(), aceptando los mismos argumentos que QMessageBox::question(). En su función contenedora, cree un QMessageBox objeto con los argumentos dados a su función y además, el Qt::FramelessWindowHint bandera, llamada exec() y pasar el valor de retorno. De esta manera, solo necesita buscar y reemplazar todas las apariciones de QMessageBox::question con XMessageBox::question en su código.

Si desea más flexibilidad, puede hacer que su question() la función acepta un argumento adicional de tipo Qt::WindowFlags y pasar esto a la QMessageBox constructor.

La única alternativa que le permitirá hacer lo que quiera sin cambiar nada de su código sería cambiar el código Qt (qmessagebox.cpp) y volver a compilar Qt.

contestado el 17 de mayo de 13 a las 23:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.