Estoy usando QMainWindow para el desarrollo de GUI de mi proyecto. Un problema con el que estoy atascado es bloquear todas las demás ventanas visibles para que no reciban entrada, mientras una está en funcionamiento.
No puedo usar QDialog. Porque se requieren características ricas de QMainWindow.
¿Cómo puedo declarar una ventana en particular como modal?
Probé con QWidget::setWindowMOdality() .
Aquí hay un programa de demostración, lo probé pero no funcionó.
#include <QApplication> #include <QMainWindow> #include <QPushButton> int main(int argc, char **argv){ QApplication a(argc, argv); QMainWindow *w1 = new QMainWindow(); w1->resize(500,800); w1->move(100,50); w1->show(); QMainWindow *w2= new QMainWindow(); w2->resize(800,500); w2->move(50,50); w2->show(); w2->setWindowModality(Qt::ApplicationModal); return a.exec(); }Intente configurar primero la bandera modal, luego muestre el widget.
w2->setWindowModality(Qt::ApplicationModal); w2->show();También puede usar QWidget y crear la barra de herramientas, la barra de menús y la barra de estado.
Gracias por sus respuestas me ayudo bastante con bloquear la ventana principal
En cada uno de mis forms le agregue al constructor esa línea de código
This->setWindowModality(Qt::ApplicationModal);