Окно модальное QFileDialog толкает родителя в фон после exec ()

Я сократил свою проблему до необходимого, так что не против того, что это ничего не дает, как показано здесь.

У меня есть мой MainWindow который является QMainWindow с QPushButton внутри, и я подключил clicked() сигнал этой кнопки к следующему слоту QMainWindow:

void MainWindow::followingSlot()
{
OpenFileDialog(this);
}

OpenFileDialog это бесплатная функция:

void OpenFileDialog(QWidget * inParent)
{
QFileDialog dialog(inParent, "caption");
dialog.setFileMode(QFileDialog::ExistingFiles);
dialog.setWindowModality(Qt::WindowModal);
dialog.exec();
}

Все отлично работает, пока у меня 2 или больше MainWindowв игре. Затем в конце QFileDialog::exec() вызов, текущий MainWindow отодвигается на одно место в «стеке фокуса» и MainWindow вторая была активирована и выпрыгнула на передний план. Я хотел бы, чтобы окно было активным и впереди, чтобы оставаться активным и впереди.

Я могу, конечно, адаптироваться OpenFileDialog к следующему:

void OpenFileDialog(QWidget * inParent)
{
QFileDialog dialog(inParent, "caption");
dialog.setFileMode(QFileDialog::ExistingFiles);
dialog.setWindowModality(Qt::WindowModal);
dialog.exec();
inParent->raise();
inParent->activateWindow();
}

Это приносит мой MainWindow назад, но вы можете увидеть, как окна меняются местами.

Я не нашел подобных проблем через Google, QtCentre или SO. Есть ли способ остановить это поведение и сосредоточиться на MainWindow что было в фокусе?

Я работаю с Qt 4.8 на Mac.

РЕДАКТИРОВАТЬ:
Я обнаружил, что это не ток MainWindow что отталкивается, это MainWindow это второе место в стеке, которое вытягивается вперед. Если я начну с левого стека, я получу правый стек (верхняя часть впереди, нижняя сзади):

current MainWindow    other MainWindow   raise() current MainWindow
other application  -> current MainWindow ------> other MainWindow
other MainWindow      other application          other application

3

Решение

Вы пытались установить модальность Qt :: ApplicationModal. Таким образом, FileDialog является модальным для всего приложения, а не только для родительского окна.

0

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

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

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