Я использую QMainWindow для разработки GUI моего проекта. Одна из проблем, с которой я застрял, заключается в блокировании всех других видимых окон от получения ввода, пока одно находится в работе.
Я не могу использовать QDialog. Потому что требуются богатые возможности QMainWindow.
Как я могу объявить определенное окно как модальное?
Я пробовал с QWidget::setWindowMOdality()
,
Вот демонстрационная программа, что я пробовал, но это не сработало.
#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();
}
Попробуйте сначала установить модальный флаг, а затем показать виджет.
w2->setWindowModality(Qt::ApplicationModal);
w2->show();
Также вы можете использовать QWidget и построить панель инструментов, строку меню и строку состояния.
Других решений пока нет …