マルチ出力

Multi Output は、複数の出力を持つコンポジターの例です。

はじめに

Multi Output のサンプルは、異なるタイプのコンポジションで、同じクライアントを異なるWaylandOutputs に表示する方法を示します。1つの出力は、同じサイズにスケールされた均一なグリッドにクライアントを表示します。もう1つの出力は、通常のデスクトップスタイルのインタラクティブなコンポジターウィンドウです。

を作成するための基本的な原則については Qt Wayland CompositorをQtで作成する基本的な原理については、Minimal QML exampleを参照してください。

複数の出力

この例では、2つの異なるウィンドウを作成します。グリッドビューでは、surfaceRequested シグナルに接続します。このシグナルはクライアントがサーフェスを作成するたびに発行されます。これにより、アプリケーションはリクエストに対するデフォルトのレスポンスをオーバーライドし、カスタムWaylandSurface

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

シグナルを受信すると、この例ではサーフェスのビューとしてWaylandQuickItem を作成します。これは、他のアイテムのように、Qt Quick シーンに追加できます。この例では、GridView に追加しています。

デスクトップスタイルのウィンドウには、XdgShell 拡張機能の機能を使用します。サーフェスが作成されると、XdgShelltoplevelCreated シグナルを発します。

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

2番目の出力にXdgToplevel を追加するために、ShellSurfaceItem を作成します。これにより、サーフェスとデスクトップ・スタイルのインタラクションが可能になる。

これらのステップが完了すると、クライアントのコンテンツが両方のウィンドウに表示される。クライアントのコンテンツを含むバッファは、両方の出力で同じですが、2つの異なる方法で視覚化され、ユーザーがそれらと対話するための異なる方法を提供します。

注意: 同じコンポジターで複数のWayland出力をサポートするには、QGuiApplication オブジェクトを構築する前にQt::AA_ShareOpenGLContexts 属性を設定する必要があります。

プロジェクト例 @ code.qt.io

Multi Screenと 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.