Название: Окно поверх приложения Отправлено: Racheengel от Ноябрь 16, 2018, 19:08 Всем Привет,
есть ли в Qt какая-либо возможность открыть окно приложения поверх всех его останых окон, НО не поверх окон других приложений? Дополнительно: окно не имеет родителя и не модально. По клику на др.окна того же приложения оно должно оставаться поверху в любом случае. Флаг Qt::WindowStaysOnTopHint делает окно поверх вообще всех приложений, что не нужно. Название: Re: Окно поверх приложения Отправлено: Racheengel от Ноябрь 17, 2018, 02:22 В общем сделал хак: запускаю в окне таймер и пару раз в секунду вызываю raise().
В принципе работает, дешево и сердито. Но как-то криво, нельзя ли поумнее :( Название: Re: Окно поверх приложения Отправлено: Igors от Ноябрь 17, 2018, 03:57 Флаг Qt::WindowStaysOnTopHint делает окно поверх вообще всех приложений, что не нужно. "не нужно" - не то выражение, это просто хреново :)В общем сделал хак: запускаю в окне таймер и пару раз в секунду вызываю raise(). В нормальном ОС есть "floating" окна именно с таким поведением, но не на бздошном Вындоуз :'( Я сделал чуть другой хак: по сигналу активации приложения выставляю/сбрасываю WindowStaysOnTopHint, тоже не блеск, но лучшего не видноВ принципе работает, дешево и сердито. Но как-то криво, нельзя ли поумнее :( Название: Re: Окно поверх приложения Отправлено: Racheengel от Ноябрь 19, 2018, 12:36 Я сделал чуть другой хак: по сигналу активации приложения выставляю/сбрасываю WindowStaysOnTopHint, тоже не блеск, но лучшего не видно Ну, это достойный хак, думаю, получше моего (таймер нинада). Но кутишники налажали с этим флагом, конечно. Поведение "всегда поверх всех окон" - довольно редкий usecase, а "поверх своих окон" надо часто, но почему-то это у них работает только с модальными диалогами и доквиджетами. Название: Re: Окно поверх приложения Отправлено: Igors от Ноябрь 20, 2018, 07:43 Но кутишники налажали с этим флагом, конечно. Поведение "всегда поверх всех окон" - довольно редкий usecase, а "поверх своих окон" надо часто, но почему-то это у них работает только с модальными диалогами и доквиджетами. Насколько помню - там дело упирается в ОСНу, это достойный хак, думаю, получше моего (таймер нинада). К сожалению, в любом случае все не так просто. Во-первых, не просто "поверх своих" - свои модальные окна должны быть "впереди". Во-вторых нужно отслеживать порядок (Z-order) окон чтобы восстанавливать их в обратном порядке. В Qt такого нет, пришлось нырять в нативняк |