マルチ出力

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

はじめに

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

QtでQt Wayland Compositorを作成する基本原則については、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も参照して ください。

©2024 The Qt Company Ltd. 本書に含まれるドキュメントの著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。