Я столкнулся с той же проблеммой и Qt::WA_GroupLeader действительно помогает, но в помощи сказано, что этот атрибут устарел и нужно использовать QWidget::windowModality. Но что-то у меня не получается при помощи QWidget::windowModality добиться того же результата, что и с Qt::WA_GroupLeader.
Что делать?
Тоже столкнулся. Надо этот атрибут присваивать не окну, которое будет выскакивать, а модальному окну, поверх которого оно будет выскактвать. Пример для наглядности:
C++ (Qt)
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDialog>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()
{
QPushButton *button = new QPushButton("push me plz");
button->setAttribute(Qt::WA_DeleteOnClose);
button->setWindowFlags(Qt::Dialog
| Qt::WindowSystemMenuHint
| Qt::WindowStaysOnTopHint
| Qt::CustomizeWindowHint);
QDialog dlg(this);
connect(button, SIGNAL(clicked()), &dlg, SLOT(accept()));
connect(button, SIGNAL(clicked()), button, SLOT(close()));
button->show();
dlg.setWindowModality(Qt::WindowModal); // ввод от button не будет заблокирован
dlg.resize(100,100);
dlg.exec();
}