Используя QT в Linux, есть ли способ отключить Always on Top?

Моя проблема: приложение QT 4 C++ для работы в Linux должно блокировать все виды рутинных функций графического интерфейса. В частности, я хочу удалить как можно больше функций строки заголовка.

Я смог сделать большую часть этого, используя setWindowFlags(Qt::Window | Qt::CustomizeWindowHint | Qt::WindowTitleHint);

Но остается выпадающее меню из верхнего левого угла строки заголовка. Большинство функций внутри отключены (нет минимума, максимума или закрытия), но флажок «всегда сверху» включен.

Могу ли я отключить флажок «Всегда сверху» через QT или мне нужно найти обходной путь ОС?


person EscherEnigma    schedule 04.03.2014    source источник
comment
Просто дружеский совет, я бы не стал использовать программное обеспечение, которое блокирует такие функции.   -  person OneOfOne    schedule 04.03.2014
comment
@OneOfOne Я знаю, что вы имеете в виду, но он не просит вас его использовать. Для этого может быть законная причина (возможно, киоск с низким уровнем безопасности или образовательное приложение).   -  person TypeIA    schedule 04.03.2014
comment
Вы можете сделать окно без заголовка и предоставить пользователю альтернативные средства для перемещения/закрытия окна.   -  person nandhp    schedule 04.03.2014
comment
@OneOfOne Я не согласен, но мой клиент согласен. Я должен был сформулировать это как требование, а не желание. Если уж на то пошло, я не совсем против того, чтобы вернуться к клиенту и сказать, что вы поставили мне требование, которое требует усилий, выходящих за пределы и бюджет, который вы мне дали, но я должен сначала провести комплексную проверку и изучить свои варианты.   -  person EscherEnigma    schedule 05.03.2014
comment
Qt::FramelessWindow или другой подобный флаг может помочь.   -  person Martian Puss    schedule 05.03.2014


Ответы (1)


Заголовок окна обрабатывается оконным менеджером. Qt не может напрямую изменить заголовок окна. Он может использовать только различные подсказки и собственный API, чтобы попросить оконный менеджер сделать то, что вы хотите (удалить определенные кнопки и т. д.). Оконный менеджер может отклонить ваш запрос. Таким образом, единственным 100% рабочим решением является использование Qt::FramelessWindowHint и рисование собственных оконных украшений вручную.

person DmitryARN    schedule 05.03.2014
comment
Принять это, потому что это решает проблему, хотя это похоже на использование дубинки, когда требовался скальпель. Однако не похоже, что QT может сделать это более элегантным способом. - person EscherEnigma; 11.03.2014