このページでは

マルチ出力

「マルチ出力」は、複数の出力を持つコンポジターを示す例です。

はじめに

「マルチ出力」の例では、異なるタイプの合成を用いて、同じクライアントを異なるWaylandOutputs に表示する方法を示しています。一方の出力では、クライアントが均一なグリッド状に、同じサイズにスケーリングされて表示されます。もう一方の出力は、通常のデスクトップスタイルのインタラクティブなコンポジターウィンドウです。

複数の出力を示す2つのコンポジターウィンドウ

Qt を使用した Qt Wayland Compositor については、「Minimal Qml」サンプルを参照してください。

複数の出力

このサンプルでは、出力ごとに1つずつ、合計2つの異なるウィンドウを作成します。グリッドビューについては、surfaceRequested シグナルに接続します。このシグナルは、クライアントが作成するサーフェスごとに発火します。これにより、アプリケーションはリクエストに対するデフォルトの応答を上書きし、カスタムWaylandSurface を作成できるようになります。

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

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

デスクトップスタイルのウィンドウを実現するために、XdgShell 拡張機能の機能を利用します。サーフェスが作成されると、XdgShell はtoplevelCreated シグナルをエミットします。

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

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

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

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

サンプルプロジェクト @ code.qt.io

「マルチスクリーン」および「オーバービューコンポジター」も参照してください 。

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