マルチ出力
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 拡張機能の機能を使用します。サーフェスが作成されると、XdgShell はtoplevelCreated シグナルを発します。
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 属性を設定する必要があります。
Multi Screenと Overview Compositorも参照して ください。
©2024 The Qt Company Ltd. 本書に含まれるドキュメントの著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。