다중 출력
다중 출력은 다중 출력을 가진 컴포저를 보여주는 예제입니다.
소개
다중 출력 예시는 서로 다른 유형의 컴포지션으로 동일한 클라이언트를 서로 다른 WaylandOutputs 에 표시하는 방법을 보여줍니다. 한 출력은 클라이언트를 동일한 크기로 조정된 균일한 그리드에 표시합니다. 다른 출력은 일반 데스크톱 스타일의 대화형 컴포저 창입니다.
Qt로 컴포지터를 만드는 기본 원리에 대한 소개는 Qt Wayland Compositor 를 만드는 기본 원리에 대한 소개는 Minimal Qt Qml 예제를 참조하세요.
다중 출력
이 예제에서는 각 출력에 대해 하나씩 두 개의 다른 창을 만듭니다. 그리드 보기의 경우 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 을 두 번째 출력에 추가합니다. 이렇게 하면 데스크톱 스타일로 서페이스와 상호 작용할 수 있습니다.
이 단계가 완료되면 클라이언트의 콘텐츠가 두 창에 모두 표시됩니다. 클라이언트의 콘텐츠를 포함하는 버퍼는 두 출력 모두에서 동일하지만 두 가지 방식으로 시각화되며 사용자가 상호 작용할 수 있는 다른 방법을 제공합니다.
참고: 동일한 컴포저에서 여러 웨이랜드 출력을 지원하려면 QGuiApplication 객체를 구성하기 전에 Qt::AA_ShareOpenGLContexts 속성을 설정해야 합니다.
© 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.