Multi-Ausgabe

Multi Output ist ein Beispiel, das einen Compositor mit mehreren Ausgaben demonstriert.

Einführung

Das Multi Output Beispiel demonstriert, wie man dieselben Clients auf verschiedenen WaylandOutputs mit verschiedenen Arten der Komposition anzeigt. Eine Ausgabe zeigt die Clients in einem einheitlichen Raster, das auf dieselbe Größe skaliert ist. Die andere Ausgabe ist ein normales interaktives Compositor-Fenster im Desktop-Stil.

Für eine Einführung in die Grundprinzipien der Erstellung eines Qt Wayland Compositor mit Qt finden Sie im Minimal QML Beispiel.

Mehrere Ausgaben

Das Beispiel erstellt zwei verschiedene Fenster, eines für jede Ausgabe. Für die Gitteransicht wird eine Verbindung mit dem Signal surfaceRequested hergestellt. Dieses Signal wird für jede Oberfläche ausgegeben, die der Client erstellt. Dadurch kann die Anwendung die Standardantwort auf die Anfrage außer Kraft setzen und eine benutzerdefinierte WaylandSurface erstellen.

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

Beim Empfang des Signals erstellt das Beispiel eine WaylandQuickItem als Ansicht der Oberfläche. Diese kann der Szene Qt Quick wie jedes andere Element hinzugefügt werden. Im Beispiel fügen wir es zu einem GridView hinzu.

Für das Fenster im Desktop-Stil verwenden wir die Funktionen der Erweiterung XdgShell. Wenn die Oberfläche erstellt wurde, sendet XdgShell ein toplevelCreated Signal aus.

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

Wir erstellen ein ShellSurfaceItem, um das XdgToplevel zum zweiten Ausgang hinzuzufügen. Dies ermöglicht eine Desktop-ähnliche Interaktion mit der Oberfläche.

Wenn diese Schritte abgeschlossen sind, ist der Inhalt des Clients in beiden Fenstern sichtbar. Die Puffer, die den Inhalt des Clients enthalten, sind für beide Ausgaben identisch, werden aber auf zwei verschiedene Arten visualisiert und bieten dem Benutzer verschiedene Möglichkeiten, mit ihnen zu interagieren.

Hinweis: Um mehrere Wayland-Ausgaben im selben Compositor zu unterstützen, muss das Attribut Qt::AA_ShareOpenGLContexts gesetzt werden, bevor das QGuiApplication Objekt erstellt wird.

Beispielprojekt @ code.qt.io

Siehe auch Multi Screen und Overview Compositor.

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