Общение с пользовательским композитором Qt WaylandC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Общение с пользовательским композитором Qt Wayland

Сообщение Anonymous »


Я создаю интерфейс для встроенной системы, на которой работает yocto, и использую Wayland для композиции окон.

По причинам, связанным с многопоточностью, Qt и внешними библиотеками, приложение было разделено на две части. Есть приложение, отображающее карту, и есть полупрозрачное приложение, показывающее наложение с элементами управления. Проблема в том, что фоновое приложение запускается дольше и поэтому при запуске находится на переднем плане.

Мой первоначальный план состоял в том, чтобы просто установить «Всегда сверху» на оверлее и покончить с этим, но поиск и чтение привели меня к факту, что в Wayland этого нет.

Существующее решение скрывает окно переднего плана на долю секунды и показывает его снова, что работает, но окно переднего плана неприятно мерцает.

Все это побудило меня попытаться создать свой собственный наборщик на основе примера кода Qt, создав наборщик, который будет иметь фиксированный порядок слоев независимо от последовательности запуска или щелчков мышью.

Теперь я перехожу к сути проблемы: Я не могу найти разумный способ идентифицировать окна, которые я создаю, чтобы установить порядок их расположения. В идеале я хотел бы найти заголовок окна или какой-либо другой воспроизводимый ключ, но кажется, что Wayland не поддерживает эти вещи по замыслу.

Я перешел к попытке идентифицировать окна по их размерам: установил фоновое окно на один пиксель шире переднего плана. Кажется, это может сработать, но проверка объектов QWaylandCompositor (и связанных с ними) при создании представлений/поверхностей дает мне -1 для обоих измерений. Я обнаружил, что в какой-то момент позже им были установлены правильные размеры, но это кажется неудобным.

Идеальным способом было бы отправить некоторые метаданные от клиента во время создания поверхности, чтобы сообщить, должно ли окно находиться сверху. Я предполагаю, что это можно сделать с помощью расширений, но мне не удалось найти в Интернете ничего стоящего по этой теме.

Возможно ли это вообще? Я ищу не там?
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»