Как установить QMainWindow как модальное?

Я использую 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();

}

1

Решение

Попробуйте сначала установить модальный флаг, а затем показать виджет.

w2->setWindowModality(Qt::ApplicationModal);
w2->show();

Также вы можете использовать QWidget и построить панель инструментов, строку меню и строку состояния.

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]