Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: yarick от Ноябрь 01, 2012, 11:37



Название: Одно топовое окно повех других топовых ок
Отправлено: yarick от Ноябрь 01, 2012, 11:37
В моей прогамме есть окна-виджеты, которые я делаю топовыми через
Код:
setWindowFlags(Qt::WindowStaysOnTopHint);
Но теперь я добавил ещё один топовый виджет, фон которого прозрачен и он растянут на весь экран. На нём я рисую, например, стрелочки из одного виджета в другой (вспомогательные элементы).
Но если нажать на топовый виджет-окно, то он отобразится поверх того топового виджета, где стрелочки рисуются. А мне нужно чтобы виджет с прозрачным фоном и нарисованным ВСЕГДА был поверх других топовых виджетов.

Тут есть два решения - либо, если на QT есть такая функция, установить супертоповый виджет (хотя мне кажется что  такой нету).
Либо как-то отслеживать z-индексы топовых виджетов и в случае, если какой-то виджет выплыл выше топового - перемещать топовый поверх него. Как это можно реализовать? Как вообще с оконной системой работать?

И ещё вопрос - как сделать чтобы клики сквозь то окно прозрачное проходили, сквозь нарисованное на нём? Это важно очень


Название: Re: Одно топовое окно повех других топовых окон
Отправлено: GreatSnake от Ноябрь 01, 2012, 11:42
Если прозрачному окну задал родителя, то не задавай.


Название: Re: Одно топовое окно повех других топовых окон
Отправлено: yarick от Ноябрь 01, 2012, 11:47
В том то и дело, что не задавал, везде 0 по умлочанию


Название: Re: Одно топовое окно повех других топовых ок
Отправлено: GreatSnake от Ноябрь 01, 2012, 11:50
Тогда выстави флаг Qt::FramelessWindowHint.
Если пишешь под X-ы, то ещё добавь Qt::X11BypassWindowManagerHint.


Название: Re: Одно топовое окно повех других топовых ок
Отправлено: navrocky от Ноябрь 01, 2012, 12:03
Что-то не то делаешь опять. Лучше делай рисование своих блоков со стрелочками в одном окне. Если нужна прозрачность для кликов вне стрелочек и блоков - корректируй маску у этого окна.