Название: Модальный QMainWindow Отправлено: Alexandr_Sky от Июль 26, 2007, 13:48 В общем-то сабж.
Необходимо из приложения открыть QMainWindow, так, чтобы само приложение ожидало закрытия этого окна. Если использовать метод show(), то окно не модальное. Название: Модальный QMainWindow Отправлено: pastor от Июль 26, 2007, 14:37 setAttribute(Qt::WA_ShowModal, true);
Можно управлять ещё видом модельности при помощи setWindowModality Название: Модальный QMainWindow Отправлено: Alexandr_Sky от Июль 26, 2007, 14:56 Не прокатывает.
Окно не реагирует, но функция из которой открывается продолжает выполнятся. Т.е. код, который должен обрабатывать результаты, выполняется не после закрытия окна, а сразу. Название: Модальный QMainWindow Отправлено: QCasper от Июль 26, 2007, 15:05 Цитата: "Alexandr_Sky" Не прокатывает. Окно не реагирует, но функция из которой открывается продолжает выполнятся. Т.е. код, который должен обрабатывать результаты, выполняется не после закрытия окна, а сразу. Основная задача заключается в достижении выполняемости некоторого кода именно после закрытия окна, или в достижении получения модальности окна? Название: Модальный QMainWindow Отправлено: pastor от Июль 26, 2007, 15:11 Только что создал тестовый пример, все работает
Код:
Можно конечно ещё добавить window->setWindowFlags( window->windowFlags() | Qt::WindowStaysOnTopHint ); Для того чтобы закрыть окно "Non-Modal" я должен закрыть окно "Modal". Если это не то чно нужно, тогда я просто не понял сути вопроса Название: Модальный QMainWindow Отправлено: Alexandr_Sky от Июль 26, 2007, 15:14 Ну в принципе и то и то.
Сейчас подумал, можно связать сигнал закрытия дополнительного окна со слотом в основном окне, а модальность сделать setAttribute(Qt::WA_ShowModal, true); Но нет ли более простого варианта? Хотя и этот сложным никак назвать нельзя. :) Название: Модальный QMainWindow Отправлено: pastor от Июль 26, 2007, 15:21 А что не так? Какова суть коннекта сигнал закрытия дополнительного окна со слотом в основном окне?
Название: Модальный QMainWindow Отправлено: Alexandr_Sky от Июль 26, 2007, 15:25 Возьмем для примера такой код:
Код: Test::Test(QWidget *parent) так вот надо, чтобы "666" в консоли появилось только после закрытия дополнительного окна. А так появляется сразу. Название: Модальный QMainWindow Отправлено: vaprele07 от Июль 26, 2007, 15:30 можно вот так сделать
Код:
Название: Модальный QMainWindow Отправлено: Alexandr_Sky от Июль 26, 2007, 15:31 Суть такова:
Основное окно открывает дополнительное, результатом работы которого будет некая информация. После закрытия дополнительного окна эту инфу надо получить в основном окне. Кроме того, надо, чтобы пользователь во время работы в доп. окне не мог ничего нажать в основном. Соответственно можно из одной функции открыть окно, и сделать слот, который будет вызываться по закрытию доп. окна. В нем уже брать результаты из класса доп. окна и обрабатывать. Название: Модальный QMainWindow Отправлено: pastor от Июль 26, 2007, 15:34 Имхо, тогда уже сделай свой класс диалога на базе QMainWindow и заюзай QEventLoop. Такое решение будет давольно простым и на мойвзгляд правильным
Название: Модальный QMainWindow Отправлено: Alexandr_Sky от Июль 26, 2007, 15:35 Всем спасибо!
Отдельное спасибо vaprele07. :) С циклом отлично работает. |