Étendre les écrans
Spanning Screens est un exemple qui montre comment permettre aux clients Wayland de s'étendre sur plusieurs écrans.
Introduction
Spanning screens est un exemple de compositeur Wayland qui maximise les clients sur un écran supérieur et un écran inférieur.

Pour une introduction aux principes de base de la création d'une interface graphique avec Qt, voir l'article sur la création d'une interface graphique minimale. Qt Wayland Compositor avec Qt, voir l'exemple Qtml minimal.
Prise en charge de plusieurs écrans
Dans Qt Wayland Compositor un écran est représenté par un WaylandOutput, et une fenêtre est utilisée pour contenir la scène représentant à la fois les clients et le compositeur. Qt Quick scène représentant à la fois les clients et l'interface utilisateur du compositeur.
Dans cet exemple, une configuration multi-écrans est émulée en créant deux fenêtres sur l'écran principal, mais le code peut facilement être modifié pour cibler plusieurs écrans physiques.
// 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]
Comme chaque fenêtre représente une scène isolée Qt Quick isolée, cela signifie que nous avons besoin d'une astuce pour que le même contenu client s'affiche dans les deux fenêtres. La façon de le faire dans Qt Wayland Compositor est de créer deux vues du même contenu client : Une pour la fenêtre du haut et une pour celle du bas. Les vues partagent une référence au même tampon graphique sous-jacent. Cela nous permet de copier différentes zones de la surface du client sur chacune des fenêtres.
const topItem = chromeComponent.createObject(topSurfaceArea, { shellSurface }); const bottomItem = chromeComponent.createObject(bottomSurfaceArea, { shellSurface, y: Qt.binding(function() { return -topSurfaceArea.height;}) });
Lorsque le client se connecte à l'extension shell XdgShell, nous créons deux références à la surface. L'une d'entre elles est ajoutée à la sortie "top" et la seconde à la sortie "bottom". L'élément de la sortie inférieure reçoit également un décalage correspondant à la hauteur de la sortie supérieure. Cela garantit que la partie de la surface du client apparaissant sur la sortie inférieure commence là où la sortie supérieure se termine.
const height = topSurfaceArea.pixelHeight + bottomSurfaceArea.pixelHeight; const width = Math.max(bottomSurfaceArea.pixelWidth, topSurfaceArea.pixelWidth); const size = Qt.size(width, height); toplevel.sendFullscreen(size);
En outre, nous demandons au client de redimensionner sa surface de manière à ce qu'elle remplisse à la fois la fenêtre du haut et celle du bas. Le résultat final est un client qui s'étend sur deux fenêtres, ou "écrans".
La référence à la même surface de client à partir de plusieurs éléments est un outil qui peut être utilisé pour de nombreuses choses. Pour une démonstration d'un compositeur de type bureau où les fenêtres peuvent être déplacées d'un écran à l'autre, consultez l'exemple Multi Screen.
L'exemple Multi Output montre comment les surfaces du client peuvent être affichées sur plusieurs sorties avec des tailles et des propriétés différentes.
Remarque : pour prendre en charge plusieurs sorties Wayland dans le même compositeur, l'attribut Qt::AA_ShareOpenGLContexts doit être défini avant la construction de l'objet 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.