Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Denjs от Сентябрь 06, 2010, 02:06



Название: Несколько модальных окон? доступ к обычному виджету при наличии модального окна?
Отправлено: Denjs от Сентябрь 06, 2010, 02:06
Мне надо организовать в приложении панель или окно, которое будет доступно
для пользователя вне зависимости от наличия каких-либо модальных окон.

Пусть мое окно не будет доступно для "активации", но как минимум кнопки на нем должны быть доступны для нажимания
даже в тот момент когда открыто какое-либо модальное окно (QDialog::exec() или QMessageBox::warning() например...).

Есть ли у кого в копилке какой-либо не сильно извращенный способ организовать такую панель ?
собственно сейчас в системе есть ряд модальных окон, и мне не хочется перерабатывать имеющийся код...?


Название: Re: Несколько модальных окон? доступ к обычному виджету при наличии модального окна?
Отправлено: Пантер от Сентябрь 06, 2010, 08:22
Не назначай этому окну парента. Только тогда оно будет еще и на панели задач светиться.


Название: Re: Несколько модальных окон? доступ к обычному виджету при наличии модального окна?
Отправлено: Denjs от Сентябрь 07, 2010, 11:36
Не назначай этому окну парента. Только тогда оно будет еще и на панели задач светиться.
увы, так не выходит.
oн все равно блокируется при выполнении любого QDialog::exec().


Название: Re: Несколько модальных окон? доступ к обычному виджету при наличии модального окна?
Отправлено: Пантер от Сентябрь 09, 2010, 06:51
Вместо exec используй show.


Название: Re: Несколько модальных окон? доступ к обычному виджету при наличии модального окна?
Отправлено: Prm от Сентябрь 09, 2010, 07:00
Можно еще попробовать установить у окна
Код:
 setWindowModality(Qt::WindowModal);


Название: Re: Несколько модальных окон? доступ к обычному виджету при наличии модального окна?
Отправлено: Denjs от Сентябрь 09, 2010, 09:39
Цитировать
Вместо exec используй show.
Тогда при появлении нового модального окна будет блокироваться доступ к моему окну.
Цитировать
Можно еще попробовать установить у окна setWindowModality(Qt::WindowModal);
тогда мое окно будет блокироватаь доступ к окнам остального приложения...

В общем пока я так понимю - так никак...
Пока сделал обходной вариант - перехватываю комбинацию клавиш и по ней делаю QDialog::exec() у моего окна. Тогда оно появляется поверх всех осталных модальных окон на то вемя пока оно мне нужно. потом я его просто скрываю и работа приложения продолжается . Пока меня это устраивает...

всем спасибо.