Название: Взаимодействие главного окна и диалога Отправлено: AlekseyK от Август 04, 2011, 12:06 Добрый день! В общем есть такая проблема: главное окно (скажем MyApp) висит в фоне (позади всех окон или вообще в трее), без нужды его показывать не нужно. Через определённые промежутки времени выскакивает StayOnTop диалог (parent = 0 у него, чтобы не быть связанным с главным окном) и запрашивает определённые действия пользователя. После закрытия диалога хотелось бы, чтобы активным так и оставалось окно приложения, с которым в данный момент работает пользователь, и он спокойно продолжал делать свои дела не переключаясь на MyApp. Однако вместо этого на передний план выскакивает главное окно MyApp и приходится постоянно переключаться обратно - неудобно. Как сделать, чтобы MyApp не выскакивало? Поставить какой-нибудь eventFilter или лезть в API ОС? Проблема есть и в маке, и в винде и в линуксе.
Название: Re: Взаимодействие главного окна и диалога Отправлено: GreatSnake от Август 04, 2011, 12:09 Цитировать Через определённые промежутки времени выскакивает StayOnTop диалог (parent = 0 у него, чтобы не быть связанным с главным окном) и запрашивает определённые действия пользователя. Выскакивает через exec() или show()?Название: Re: Взаимодействие главного окна и диалога Отправлено: AlekseyK от Август 04, 2011, 12:16 exec()
Название: Re: Взаимодействие главного окна и диалога Отправлено: GreatSnake от Август 04, 2011, 12:17 exec() Пробуй через show().Название: Re: Взаимодействие главного окна и диалога Отправлено: AlekseyK от Август 04, 2011, 12:53 Тоже самое.
Название: Re: Взаимодействие главного окна и диалога Отправлено: Igors от Август 04, 2011, 12:55 А если спробовать назначить парентом то окно которое нужно поставить активным после завершения?
Название: Re: Взаимодействие главного окна и диалога Отправлено: GreatSnake от Август 04, 2011, 12:56 Тоже самое. Показывай тогда как создаёшь ентот StayOnTop диалог.Название: Re: Взаимодействие главного окна и диалога Отправлено: AlekseyK от Август 04, 2011, 13:02 А если спробовать назначить парентом то окно которое нужно поставить активным после завершения? Каким образом??? ;) У меня как бы сервисное приложение, которое должно висеть в фоне и не мозолить глаза. Т.е. пользователь работает с ЛЮБЫМИ своими программами и после завершения диалога должен к ним и вернуться.Название: Re: Взаимодействие главного окна и диалога Отправлено: AlekseyK от Август 04, 2011, 13:05 Показывай тогда как создаёшь ентот StayOnTop диалог. Ну примерно так: Код
Название: Re: Взаимодействие главного окна и диалога Отправлено: AlekseyK от Август 11, 2011, 07:26 Похоже, что реализовать не получится:
http://developer.qt.nokia.com/forums/viewthread/8495/#49421 http://stackoverflow.com/questions/6981101/main-application-window-and-a-dialog-interaction-in-qt Название: Re: Взаимодействие главного окна и диалога Отправлено: GreatSnake от Август 11, 2011, 12:14 Странно... У меня с этим ни на X-ах ни на винде (проверял, правда, только на WS2003) таких проблем нет.
Вот пример: Код
Название: Re: Взаимодействие главного окна и диалога Отправлено: kambala от Август 11, 2011, 12:29 на маке видно как главное окошко сначала появляется, а потом сразу сворачивается. при активном другом приложении иконка в доке начинает постоянно скакать, при нажатии на нее - показывается диалог. setWindowFlags(Qt::WindowStaysOnTopHint) помог только при первом показе, в дальнейшем диалог не висит поверх всех окон.
Название: Re: Взаимодействие главного окна и диалога Отправлено: Гурман от Август 11, 2011, 13:39 У меня дома в виндозе включено focus follows mouse, при этом политика отслеживания фокуса и работы с окнами у виндозы сильно меняется. Фокус может попасть даже в перекрытое окно, без необходимости его подъема наверх - то есть, можно вводить данные в поля формы, которая частично перекрыта. Так вот, если при этом Qt-приложение создает немодальное окно, то оно выскакивает поверх всех окон, но если само это приложение перекрыто, то оно не поднимается под созданное им окно, так и остается перекрытым. Пришлось даже специально его поднимать сначала для случаев такой настройки.
Название: Re: Взаимодействие главного окна и диалога Отправлено: AlekseyK от Август 14, 2011, 10:58 Хм, похоже, что в Линуксе и Винде должно работать, судя по примеру Window Flags из QT Demo. На маке не будет так как тут оконный менеждер поднимает следующее окно того же приложения при закрытии предыдущего. Но у меня пока не получается почему-то, надо понять, в чём отличие, может QDialog заменить на QWidget.
Название: Re: Взаимодействие главного окна и диалога Отправлено: AlekseyK от Август 26, 2011, 16:39 Хмм... В винде работает по всякому, в Линуксе пока не захотело, хотя пример "Windows Flags" работает. Сравню значения флагов.
Название: Re: Взаимодействие главного окна и диалога Отправлено: AlekseyK от Август 29, 2011, 22:42 Похоже всё дело в настройках оконного менеждера, КДЕ был криво настроен.
|