Sur cette page

Sorties multiples

« Multi Output » est un exemple illustrant un compositeur à sorties multiples.

Introduction

L'exemple « Multi Output » montre comment afficher les mêmes clients sur différentes « WaylandOutputs » avec différents types de composition. Une sortie affiche les clients dans une grille uniforme, mis à l'échelle à la même taille. L'autre sortie est une fenêtre de compositeur interactive classique, de type bureau.

Deux fenêtres de composition illustrant plusieurs sorties

Pour une introduction aux principes de base de la création d’un Qt Wayland Compositor avec Qt, consultez l’exemple Minimal Qml.

Sorties multiples

L'exemple crée deux fenêtres distinctes, une pour chaque sortie. Pour l'affichage en grille, nous nous connectons au signal ` surfaceRequested `. Ce signal est émis pour chaque surface créée par le client. Cela permet à l'application de remplacer la réponse par défaut à la requête et de créer une surface personnalisée ` WaylandSurface`.

onSurfaceRequested: (client, id, version) => {
    var surface = surfaceComponent.createObject(comp, { } );
    surface.initialize(comp, client, id, version);
}

À la réception du signal, l’exemple crée une WaylandQuickItem en tant que vue de la surface. Celle-ci peut être ajoutée à la scène Qt Quick comme n’importe quel autre élément. Dans l’exemple, nous l’ajoutons à une GridView.

Pour la fenêtre de type bureau, nous utilisons les fonctionnalités de l’extension XdgShell. Une fois la surface créée, l’ XdgShell émet un signal toplevelCreated.

XdgShell {
    onToplevelCreated: (toplevel, xdgSurface) => {
        var item = chromeComponent.createObject(defaultOutput.surfaceArea, { "shellSurface": xdgSurface } );
        item.surface.activated.connect(item.raise);
    }
}

Nous créons un ` ShellSurfaceItem ` pour ajouter le ` XdgToplevel ` à la deuxième sortie. Cela permet une interaction de type bureau avec la surface.

Une fois ces étapes effectuées, le contenu du client est visible dans les deux fenêtres. Les tampons contenant le contenu du client sont identiques pour les deux sorties, mais sont visualisés de deux manières différentes et offrent à l’utilisateur différentes façons d’interagir avec eux.

Remarque : afin de prendre en charge plusieurs sorties Wayland dans le même compositeur, l’attribut ` Qt::AA_ShareOpenGLContexts ` doit être défini avant la création de l’objet ` QGuiApplication `.

Exemple de projet sur code.qt.io

Voir également «Multi Screen » et « Overview Compositor ».

© 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.