Abarcando Pantallas
Spanning Screens es un ejemplo que demuestra cómo permitir que los clientes Wayland abarquen múltiples pantallas.
Introducción
Spanning screens es un ejemplo de compositor Wayland que maximiza los clientes a través de una pantalla superior y otra inferior.

Para una introducción a los principios básicos de la creación de un compositor Qt Wayland Compositor con Qt, vea el ejemplo Minimal QML.
Soporte de múltiples pantallas
En Qt Wayland Compositor una pantalla está representada por WaylandOutput, y se utiliza una ventana para contener la escena que representa tanto a los clientes como al compositor. Qt Quick escena que representa tanto a los clientes como a la UI del compositor.
En este ejemplo, se emula una configuración multipantalla creando dos ventanas en la pantalla principal, pero el código puede modificarse fácilmente para apuntar a múltiples pantallas físicas.
// Enable the following to make the output target an actual screen, // for example when running on eglfs in a multi-display embedded system. // screen: Qt.application.screens[0]
Dado que cada ventana representa una escena aislada Qt Quick aislada, necesitamos un truco para que el mismo contenido del cliente se muestre en ambas ventanas. La forma de hacerlo en Qt Wayland Compositor es crear dos vistas del mismo contenido del cliente: Una para la ventana "superior" y otra para la "inferior". Las vistas comparten una referencia al mismo búfer gráfico subyacente. Esto nos permite copiar diferentes áreas de la superficie del cliente en cada una de las ventanas.
const topItem = chromeComponent.createObject(topSurfaceArea, { shellSurface }); const bottomItem = chromeComponent.createObject(bottomSurfaceArea, { shellSurface, y: Qt.binding(function() { return -topSurfaceArea.height;}) });
Cuando el cliente se conecta a la extensión de shell XdgShell, creamos dos referencias a la superficie. Una de ellas se añade a la salida "superior", y la segunda a la "inferior". El elemento de la salida inferior también recibe un desplazamiento correspondiente a la altura de la salida superior. Esto garantiza que la parte de la superficie del cliente que se muestra en la salida inferior comienza donde termina la salida superior.
const height = topSurfaceArea.pixelHeight + bottomSurfaceArea.pixelHeight; const width = Math.max(bottomSurfaceArea.pixelWidth, topSurfaceArea.pixelWidth); const size = Qt.size(width, height); toplevel.sendFullscreen(size);
Además, le decimos al cliente que redimensione su superficie para que llene tanto la ventana superior como la inferior. El resultado final es un cliente que abarca dos ventanas o "pantallas".
Hacer referencia a la misma superficie de cliente desde varios elementos es una herramienta que puede utilizarse para muchas cosas. Para ver una demostración de un compositor de estilo escritorio en el que las ventanas pueden moverse de una pantalla a otra, eche un vistazo al ejemplo Multipantalla.
El ejemplo Multi Salida muestra cómo las superficies de los clientes pueden ser mostradas en múltiples salidas con diferentes tamaños y otras propiedades.
Nota: Para soportar múltiples salidas Wayland en el mismo compositor, el atributo Qt::AA_ShareOpenGLContexts debe establecerse antes de construir el objeto QGuiApplication.
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.