QQuickWindow Class

QQuickWindow 클래스는 그래픽 QML 장면을 표시하는 창을 제공합니다. 더 보기...

Header: #include <QQuickWindow>
CMake: find_package(Qt6 REQUIRED COMPONENTS Quick)
target_link_libraries(mytarget PRIVATE Qt6::Quick)
qmake: QT += quick
QML에서: Window
상속합니다: QWindow
상속 대상:

QQuickView

공용 유형

struct GraphicsStateInfo
enum CreateTextureOption { TextureHasAlphaChannel, TextureHasMipmaps, TextureOwnsGLTexture, TextureCanUseAtlas, TextureIsOpaque }
flags CreateTextureOptions
enum RenderStage { BeforeSynchronizingStage, AfterSynchronizingStage, BeforeRenderingStage, AfterRenderingStage, AfterSwapStage, NoStage }
enum SceneGraphError { ContextNotAvailable }
enum TextRenderType { QtTextRendering, NativeTextRendering, CurveTextRendering }

속성

공용 함수

QQuickWindow(QQuickRenderControl *control)
QQuickWindow(QWindow *parent = nullptr)
virtual ~QQuickWindow() override
QQuickItem *activeFocusItem() const
void beginExternalCommands()
QColor color() const
QQuickItem *contentItem() const
QSGImageNode *createImageNode() const
QSGNinePatchNode *createNinePatchNode() const
QSGRectangleNode *createRectangleNode() const
(since 6.7) QSGTextNode *createTextNode() const
QSGTexture *createTextureFromImage(const QImage &image, QQuickWindow::CreateTextureOptions options) const
QSGTexture *createTextureFromImage(const QImage &image) const
(since 6.6) QSGTexture *createTextureFromRhiTexture(QRhiTexture *texture, QQuickWindow::CreateTextureOptions options = {}) const
qreal effectiveDevicePixelRatio() const
void endExternalCommands()
QImage grabWindow()
(since 6.0) QQuickGraphicsConfiguration graphicsConfiguration() const
(since 6.0) QQuickGraphicsDevice graphicsDevice() const
const QQuickWindow::GraphicsStateInfo &graphicsStateInfo()
QQmlIncubationController *incubationController() const
bool isPersistentGraphics() const
bool isPersistentSceneGraph() const
bool isSceneGraphInitialized() const
(since 6.0) QQuickRenderTarget renderTarget() const
QSGRendererInterface *rendererInterface() const
(since 6.6) QRhi *rhi() const
void scheduleRenderJob(QRunnable *job, QQuickWindow::RenderStage stage)
void setColor(const QColor &color)
(since 6.0) void setGraphicsConfiguration(const QQuickGraphicsConfiguration &config)
(since 6.0) void setGraphicsDevice(const QQuickGraphicsDevice &device)
void setPersistentGraphics(bool persistent)
void setPersistentSceneGraph(bool persistent)
(since 6.0) void setRenderTarget(const QQuickRenderTarget &target)
(since 6.6) QRhiSwapChain *swapChain() const

재구현된 공용 함수

virtual QAccessibleInterface *accessibleRoot() const override

공용 슬롯

void releaseResources()
void update()

시그널

void activeFocusItemChanged()
void afterAnimating()
(since 6.0) void afterFrameEnd()
void afterRenderPassRecording()
void afterRendering()
void afterSynchronizing()
(since 6.0) void beforeFrameBegin()
void beforeRenderPassRecording()
void beforeRendering()
void beforeSynchronizing()
void colorChanged(const QColor &)
void frameSwapped()
void sceneGraphAboutToStop()
void sceneGraphError(QQuickWindow::SceneGraphError error, const QString &message)
void sceneGraphInitialized()
void sceneGraphInvalidated()

정적 공용 멤버

(since 6.0) QSGRendererInterface::GraphicsApi graphicsApi()
bool hasDefaultAlphaBuffer()
QString sceneGraphBackend()
void setDefaultAlphaBuffer(bool useAlpha)
(since 6.0) void setGraphicsApi(QSGRendererInterface::GraphicsApi api)
void setSceneGraphBackend(const QString &backend)
void setTextRenderType(QQuickWindow::TextRenderType renderType)
QQuickWindow::TextRenderType textRenderType()

재구현된 보호 함수

virtual void closeEvent(QCloseEvent *e) override
virtual bool event(QEvent *event) override
virtual void exposeEvent(QExposeEvent *) override
virtual void focusInEvent(QFocusEvent *ev) override
virtual void focusOutEvent(QFocusEvent *ev) override
virtual void hideEvent(QHideEvent *) override
virtual void keyPressEvent(QKeyEvent *e) override
virtual void keyReleaseEvent(QKeyEvent *e) override
virtual void mouseDoubleClickEvent(QMouseEvent *event) override
virtual void mouseMoveEvent(QMouseEvent *event) override
virtual void mousePressEvent(QMouseEvent *event) override
virtual void mouseReleaseEvent(QMouseEvent *event) override
virtual void resizeEvent(QResizeEvent *ev) override
virtual void showEvent(QShowEvent *) override
virtual void tabletEvent(QTabletEvent *event) override
virtual void wheelEvent(QWheelEvent *event) override

상세 설명

QQuickWindow는 QQuickItems의 장면과 상호 작용하고 표시하는 데 필요한 그래픽 장면 관리를 제공합니다.

QQuickWindow에는 항상 보이지 않는 루트 항목이 하나 있습니다. 이 창에 항목을 추가하려면 루트 항목이나 장면의 기존 항목에 항목을 다시 부모로 지정합니다.

QML 파일에서 장면을 쉽게 표시하려면 QQuickView 을 참조하십시오.

렌더링

QQuickWindow는 장면 그래프를 사용하여 렌더링해야 할 내용을 나타냅니다. 이 씬 그래프는 플랫폼 구현에 따라 QML 씬에서 분리되어 다른 스레드에 존재할 수 있습니다. 렌더링 씬 그래프는 QML 씬과 독립적으로 존재하므로 QML 씬의 상태에 영향을 주지 않고 완전히 해제할 수도 있습니다.

sceneGraphInitialized() 신호는 QML 장면이 화면에 처음 렌더링되기 전에 렌더링 스레드에서 방출됩니다. 렌더링 장면 그래프가 해제된 경우 다음 프레임이 렌더링되기 전에 신호가 다시 방출됩니다. 눈에 보이는 온스크린 QQuickWindow는 내부적으로 render loop 에 의해 구동되며, 장면 그래프에는 여러 가지 구현이 제공됩니다. 씬 그래프 렌더링 프로세스에 대한 자세한 내용은 Qt Quick 씬 그래프를 참조하십시오.

기본적으로 QQuickWindow는 OpenGL 또는 Vulkan과 같은 가속화된 3D 그래픽 API를 사용하여 렌더링합니다. 장면 그래프 백엔드 및 지원되는 그래픽 API에 대한 자세한 개요는 장면 그래프 적응을 참조하세요.

경고: 그래픽 작업 및 씬 그래프와의 상호 작용은 렌더링 스레드에서만, 주로 updatePaintNode() 단계에서 발생하는 것이 중요합니다.

경고: 렌더링과 관련된 많은 신호가 렌더링 스레드에서 방출되므로 Qt::DirectConnection 을 사용하여 연결해야 합니다.

가속화된 3D 그래픽 API와의 통합

QQuickWindow와 기본 씬 그래프가 동일한 API를 사용하여 렌더링하는 한 OpenGL, Vulkan, Metal 또는 Direct3D 11 호출을 QQuickWindow에 직접 통합할 수 있습니다. 장치 또는 컨텍스트 객체 핸들과 같은 네이티브 그래픽 객체에 액세스하려면 QSGRendererInterface 을 사용합니다. QSGRendererInterface 의 인스턴스는 rendererInterface()을 호출하여 QQuickWindow에서 쿼리할 수 있습니다. 이 통합을 위한 인에이블러는 beforeRendering(), beforeRenderPassRecording(), afterRenderPassRecording() 및 관련 신호입니다. 이를 통해 언더레이 또는 오버레이를 렌더링할 수 있습니다. 또는 QNativeInterface::QSGOpenGLTexture, QNativeInterface::QSGVulkanTexture 및 기타 유사한 클래스를 사용하면 기존 네이티브 텍스처 또는 이미지 객체를 QSGTexture 로 래핑한 다음 씬 그래프와 함께 사용할 수 있습니다.

가속 없이 렌더링

제한적인 순수 소프트웨어 기반 렌더링 경로도 사용할 수 있습니다. software 백엔드에서는 여러 가지 Qt Quick 기능을 사용할 수 없으며, 이러한 기능에 의존하는 QML 항목은 전혀 렌더링되지 않습니다. 동시에 3D 그래픽 API를 전혀 사용할 수 없는 시스템에서도 QQuickWindow가 작동할 수 있습니다. 자세한 내용은 Qt Quick 소프트웨어 적응을 참조하십시오.

리디렉션 렌더링

QQuickWindow가 반드시 화면의 기본 창에 의해 지원되는 것은 아닙니다. 렌더링은 지정된 기본 텍스처와 같은 사용자 지정 렌더링 대상을 대상으로 리디렉션할 수 있습니다. 이는 QQuickRenderControl 클래스 및 setRenderTarget(), setGraphicsDevice(), setGraphicsConfiguration()와 같은 함수를 조합하여 이루어집니다.

이 경우 QQuickWindow는 장면을 나타내며 프레임 렌더링을 위한 내부 구조를 제공합니다. 렌더 루프와 기본 창으로 뒷받침되지 않습니다. 대신 이 경우 애플리케이션이 렌더링을 구동하여 렌더링 루프를 효과적으로 대체합니다. 이를 통해 이미지 시퀀스를 생성하거나, 외부 3D 엔진에서 사용할 텍스처로 렌더링하거나, VR 환경 내에서 Qt Quick 콘텐츠를 렌더링할 수 있습니다.

리소스 관리

QML은 성능 향상을 위해 이미지와 씬 그래프 노드를 캐시하려고 시도하지만 일부 메모리 부족 시나리오에서는 이러한 리소스를 적극적으로 해제해야 할 수도 있습니다. releaseResources () 함수는 특정 리소스, 특히 캐시되어 있다가 나중에 필요할 때 다시 생성할 수 있는 리소스를 강제로 정리하는 데 사용할 수 있습니다.

또한 releaseResources()를 호출하면 전체 씬 그래프와 관련 그래픽 리소스가 해제될 수 있습니다. 이 경우 sceneGraphInvalidated() 신호가 방출됩니다. 이 동작은 setPersistentGraphics() 및 setPersistentSceneGraph() 함수에 의해 제어됩니다.

참고: 접두사가 QSG인 모든 클래스는 씬 그래프의 렌더링 스레드에서만 사용해야 합니다. 자세한 내용은 씬 그래프 및 렌더링을 참조하십시오.

노출 및 가시성

hide() 또는 setVisible(false)을 사용하여 QQuickWindow 인스턴스를 의도적으로 숨기면 렌더링이 중지되고 해당 씬 그래프 및 그래픽 컨텍스트도 해제될 수 있습니다. 이는 setPersistentGraphics() 및 setPersistentSceneGraph()에서 구성한 설정에 따라 달라집니다. 이 동작은 releaseResources() 함수를 명시적으로 호출하는 것과 동일합니다. 다른 방법으로도 창을 노출되지 않게, 즉 렌더링할 수 없게 만들 수 있습니다. 이는 플랫폼 및 창 시스템에 따라 다릅니다. 예를 들어 Windows에서는 창을 최소화하면 렌더링이 중지됩니다. macOS에서는 상단의 다른 창으로 창을 완전히 가리면 동일한 동작이 트리거됩니다. Linux/X11에서는 창 관리자에 따라 동작이 달라집니다.

OpenGL 컨텍스트 및 표면 형식

멤버 함수 setFormat()를 호출하여 모든 QQuickWindow에 대해 QSurfaceFormat 을 지정할 수 있지만, Window 및 ApplicationWindow 요소를 사용하여 QML에서 창을 만들 수도 있습니다. 이 경우 창 인스턴스 생성에 C++ 코드가 포함되지 않지만, 애플리케이션에서 특정 서페이스 포맷 값을 설정하고자 할 수 있습니다(예: 지정된 OpenGL 버전 또는 프로필 요청). 이러한 애플리케이션은 시작 시 정적 함수 QSurfaceFormat::setDefaultFormat()를 호출할 수 있습니다. 지정된 형식은 이후 생성되는 모든 빠른 창에 사용됩니다.

벌칸 인스턴스

벌칸을 사용할 때 QQuickWindow는 씬 그래프에 의해 내부적으로 생성 및 관리되는 QVulkanInstance 에 자동으로 연결됩니다. 이렇게 하면 대부분의 애플리케이션은 모든 작업이 자동으로 이루어지므로 VkInstance 을 사용할 수 있는지 걱정할 필요가 없습니다. 고급의 경우 특정 방식으로 구성하기 위해 애플리케이션에서 자체적으로 QVulkanInstance 을 생성할 수도 있습니다. 그것도 가능합니다. 구성 직후 QQuickWindow에서 setVulkanInstance()를 호출하면 표시되기 전에 애플리케이션에서 제공하는 QVulkanInstance (및 기본 VkInstance)을 사용하게 됩니다. QQuickRenderControl 을 통해 리디렉션하는 경우 QVulkanInstance 이 자동으로 제공되지 않고 애플리케이션이 자체적으로 제공한 후 QQuickWindow와 연결해야 합니다.

그래픽 컨텍스트 및 장치

씬 그래프가 초기화될 때(일반적으로 창이 노출되거나 리디렉션 렌더링의 경우 초기화가 수행될 때) via QQuickRenderControl, 렌더링에 필요한 컨텍스트 또는 디바이스 객체가 자동으로 생성됩니다. 여기에는 OpenGL 컨텍스트, Direct3D 디바이스 및 디바이스 컨텍스트, Vulkan 및 Metal 디바이스가 포함됩니다. 나중에 애플리케이션 코드에서 QSGRendererInterface 을 통해 쿼리할 수도 있습니다. GUI 스레드에서 모든 렌더링을 수행하는 basic 렌더 루프를 사용하는 경우, 표시되는 모든 QQuickWindows에 동일한 컨텍스트 또는 장치가 사용됩니다. threaded 렌더 루프는 각 렌더링 스레드에 대해 전용 컨텍스트 또는 장치 개체를 사용하므로 각 QQuickWindow에 대해 사용됩니다. 일부 그래픽 API의 경우 setGraphicsConfiguration()를 통해 어느 정도의 사용자 지정 기능이 제공됩니다. 예를 들어 VkDevice 에서 활성화할 벌칸 확장 목록을 지정할 수 있습니다. 또는 QQuickWindow가 자체적으로 구성하는 대신 기존 컨텍스트 또는 장치 개체 집합을 제공하여 사용할 수 있습니다. 이는 setGraphicsDevice()를 통해 이루어집니다.

QQuickView, QQuickRenderControl, QQuickRenderTarget, QQuickGraphicsDevice, QQuickGraphicsConfiguration, QSGRendererInterface도 참조하세요 .

멤버 유형 문서

열거형 QQuickWindow::CreateTextureOption
플래그 QQuickWindow::CreateTextureOptions

CreateTextureOption 열거형은 텍스처가 래핑된 것을 커스터마이즈하는 데 사용됩니다.

상수설명
QQuickWindow::TextureHasAlphaChannel0x0001텍스처에 알파 채널이 있으며 블렌딩을 사용하여 그려야 합니다.
QQuickWindow::TextureHasMipmaps0x0002텍스처에 밉맵이 있으며 밉맵을 활성화하여 그릴 수 있습니다.
QQuickWindow::TextureOwnsGLTexture0x0004Qt 6.0부터 이 플래그는 실제로는 사용되지 않으며 무시됩니다. 네이티브 그래픽 리소스 소유권은 래핑 QSGTexture 으로 이전할 수 없습니다. Qt Quick 에는 해당 객체 및 관련 메모리를 해제하는 방법에 대한 세부 정보가 없을 수 있기 때문입니다.
QQuickWindow::TextureCanUseAtlas0x0008이미지를 텍스처 아틀라스에 업로드할 수 있습니다.
QQuickWindow::TextureIsOpaque0x0010텍스처는 QSGTexture::hasAlphaChannel()에 대해 거짓을 반환하고 블렌딩되지 않습니다. 이 플래그는 Qt 5.6에 추가되었습니다.

CreateTextureOptions 유형은 QFlags<CreateTextureOption>에 대한 typedef입니다. CreateTextureOption 값의 OR 조합을 저장합니다.

enum QQuickWindow::RenderStage

상수설명
QQuickWindow::BeforeSynchronizingStage0동기화 전.
QQuickWindow::AfterSynchronizingStage1동기화 후.
QQuickWindow::BeforeRenderingStage2렌더링 전.
QQuickWindow::AfterRenderingStage3렌더링 후.
QQuickWindow::AfterSwapStage4프레임이 스왑된 후.
QQuickWindow::NoStage5가능한 한 빨리. 이 값은 Qt 5.6에 추가되었습니다.

씬 그래프 및 렌더링도참조하십시오 .

enum QQuickWindow::SceneGraphError

이 열거형은 sceneGraphError() 신호의 오류를 설명합니다.

Constant설명
QQuickWindow::ContextNotAvailable1그래픽 컨텍스트 생성에 실패했습니다. 이는 일반적으로 그래픽 드라이버가 설치되어 있지 않아서 OpenGL 2를 지원하지 않는 등 적절한 OpenGL 구현을 찾을 수 없음을 의미합니다. OpenGL ES를 사용하는 모바일 및 임베디드 보드에서 이러한 오류는 윈도우 시스템 통합에 문제가 있거나 Qt의 구성이 잘못되었을 가능성이 높습니다.

enum QQuickWindow::TextRenderType

이 열거형은 Qt Quick (Text, TextInput, 등)에서 텍스트와 유사한 요소의 기본 렌더링 유형을 설명합니다.

텍스트가 대상 플랫폼에서 네이티브처럼 보이기를 원하고 텍스트 변형과 같은 고급 기능이 필요하지 않은 경우 NativeTextRendering을 선택합니다. 이러한 기능을 NativeTextRendering 렌더링 유형과 함께 사용하면 결과가 좋지 않고 때로는 픽셀화된 결과를 얻을 수 있습니다.

QtTextRenderingCurveTextRendering 는 모두 하드웨어 가속 기술입니다. QtTextRendering 는 둘 중 더 빠르지만 메모리를 더 많이 사용하며 큰 크기에서는 렌더링 아티팩트가 나타납니다. CurveTextRenderingQtTextRendering 가 좋은 시각적 결과를 제공하지 않거나 그래픽 메모리 소비를 줄이는 것이 우선 순위인 경우 대안으로 고려해야 합니다.

Constant설명
QQuickWindow::QtTextRendering0Qt의 자체 래스터화 알고리즘을 사용합니다.
QQuickWindow::NativeTextRendering1텍스트에 운영 체제의 기본 래스터라이저를 사용합니다.
QQuickWindow::CurveTextRendering2텍스트는 그래픽 하드웨어에서 직접 실행되는 커브 래스터라이저를 사용하여 렌더링됩니다. (Qt 6.7.0에 도입되었습니다.)

속성 문서

[read-only] activeFocusItem : QQuickItem* const

이 속성은 현재 활성 포커스가 있는 항목 또는 활성 포커스가 있는 항목이 없는 경우 null 을 보유합니다.

기능에 액세스합니다:

QQuickItem *activeFocusItem() const

알림 신호:

void activeFocusItemChanged()

QQuickItem::forceActiveFocus() 및 Qt Quick 의 키보드 포커스도참조하세요 .

color : QColor

이 속성은 각 프레임이 시작될 때 색상 버퍼를 지우는 데 사용되는 색상을 저장합니다.

기본적으로 지우기 색상은 흰색입니다.

기능에 액세스합니다:

QColor color() const
void setColor(const QColor &color)

알림 신호:

void colorChanged(const QColor &)

setDefaultAlphaBuffer()도 참조하세요 .

[read-only] contentItem : QQuickItem* const

이 속성은 장면의 보이지 않는 루트 항목을 보유합니다.

QQuickWindow 에는 항상 모든 콘텐츠가 포함된 하나의 보이지 않는 루트 항목이 있습니다. 이 창에 항목을 추가하려면 항목을 contentItem 또는 씬의 기존 항목에 부모를 다시 지정합니다.

함수 액세스:

QQuickItem *contentItem() const

transientParent : QWindow* const

이 속성은 이 창이 임시 팝업인 창을 보유합니다.

이는 창 관리자에게 이 창이 일시적인 부모( QWindow 일 수 있음)를 대신하는 대화상자 또는 팝업임을 알려주는 힌트입니다.

창 관리자에 따라 기본적으로 창이 임시 부모 위에 중앙에 위치하도록 하려면 flags 속성을 적절한 Qt::WindowType (예: Qt::Dialog)로 설정해야 할 수도 있습니다.

parent()도 참조하세요 .

멤버 함수 문서

[explicit] QQuickWindow::QQuickWindow(QQuickRenderControl *control)

control 객체에 의해 렌더링이 제어되는 QML 장면을 표시하는 창을 구성합니다. 자세한 내용은 QQuickRenderControl 문서를 참조하세요.

[explicit] QQuickWindow::QQuickWindow(QWindow *parent = nullptr)

부모 창이 있는 QML 장면을 표시하는 창을 구성합니다 parent.

[override virtual noexcept] QQuickWindow::~QQuickWindow()

창을 파괴합니다.

[override virtual] QAccessibleInterface *QQuickWindow::accessibleRoot() const

이 창에 대한 접근성 인터페이스를 반환하거나, 인터페이스를 만들 수 없는 경우 0을 반환합니다.

[signal] void QQuickWindow::afterAnimating()

이 신호는 렌더 스레드에 씬 그래프의 동기화를 요청하기 전에 GUI 스레드에서 발생합니다.

다른 유사한 신호와 달리 이 신호는 렌더 스레드가 아닌 GUI 스레드에서 발생합니다. 이 신호는 외부 애니메이션 시스템을 QML 콘텐츠와 동기화하는 데 사용할 수 있습니다. 동시에 이 신호는 그래픽 작업을 트리거하는 데 적합하지 않다는 것을 의미합니다.

[signal, since 6.0] void QQuickWindow::afterFrameEnd()

이 신호는 씬 그래프가 프레임을 제출할 때 발생합니다. afterRendering ()와 같은 다른 모든 관련 신호 이후에 발생합니다. 프레임을 렌더링할 때 씬 그래프 렌더링 스레드에서 마지막으로 발생하는 신호입니다.

참고: frameSwapped()와 달리 이 신호는 Qt Quick 출력이 QQuickRenderControl 를 통해 리디렉션될 때에도 발생이 보장됩니다.

경고: 이 신호는 씬 그래프 렌더링 스레드에서 방출됩니다. 실행을 계속하기 전에 슬롯 함수가 완료되어야 하는 경우 연결이 직접 연결되었는지 확인해야 합니다( Qt::ConnectionType 참조 ).

이 함수는 Qt 6.0에 도입되었습니다.

beforeFrameBegin() 및 rendererInterface()도 참조하십시오 .

[signal] void QQuickWindow::afterRenderPassRecording()

이 신호는 시나리오 그래프가 메인 렌더 패스에 대한 명령을 기록했지만 명령 버퍼에서 패스가 아직 확정되지 않은 후에 발생합니다.

이 신호는 afterRendering()보다 일찍 발생하며, 프레임뿐만 아니라 시나리오 그래프의 메인 렌더 패스의 기록이 여전히 활성 상태임을 보장합니다. 따라서 전체 렌더 패스를 별도로 생성하지 않고도 명령을 삽입할 수 있습니다(일반적으로 첨부된 이미지가 지워짐). 네이티브 그래픽 오브젝트는 QSGRendererInterface 을 통해 쿼리할 수 있습니다.

참고: 리소스 업데이트(업로드, 복사)는 일반적으로 렌더 패스 내에서 대기열에 추가할 수 없습니다. 따라서 보다 복잡한 사용자 렌더링은 beforeRendering()와 이 신호 모두에 연결해야 합니다.

경고: 이 신호는 씬 그래프 렌더링 스레드에서 방출됩니다. 실행을 계속하기 전에 슬롯 함수를 완료해야 하는 경우 연결이 직접 연결되었는지 확인해야 합니다( Qt::ConnectionType 참조).

QML에서rendererInterface() 및 씬 그래프 - RHI를참조하세요 .

[signal] void QQuickWindow::afterRendering()

이 신호는 씬 그래프가 아직 그래픽 대기열에 제출되지 않은 명령 버퍼에 명령을 추가한 후에 방출됩니다. 원하는 경우 이 신호에 연결된 슬롯 함수는 QSGRendererInterface 을 통해 명령 버퍼와 같은 네이티브 리소스를 쿼리할 수 있습니다. 그러나 이 시점에서는 렌더링 패스가 이미 기록되어 있으므로 시나리오 그래프의 패스 내에 명령을 더 추가할 수 없다는 점에 유의하세요. 대신 afterRenderPassRecording()를 사용하세요. 따라서 이 신호는 Qt 5와 달리 Qt 6에서는 사용이 제한적입니다. 대신 beforeRendering() 및 beforeRenderPassRecording() 또는 beforeRendering() 및 afterRenderPassRecording()의 조합을 사용하여 사용자 지정 렌더링을 언더 또는 오버레이하는 데 주로 사용됩니다.

경고: 이 신호는 씬 그래프 렌더링 스레드에서 방출됩니다. 실행을 계속하기 전에 슬롯 함수를 완료해야 하는 경우 연결이 직접 연결되었는지 확인해야 합니다( Qt::ConnectionType 참조 ).

참고: OpenGL을 사용하는 경우, 연결된 슬롯에서 돌아올 때 OpenGL 3.x 또는 4.x 특정 상태를 설정하고 이를 활성화하거나 기본값이 아닌 값으로 설정하면 씬 그래프의 렌더링에 방해가 될 수 있다는 점에 유의하세요. 씬 그래프에서 렌더링에 사용되는 QOpenGLContext 은 신호가 방출될 때 바인딩됩니다.

또한 rendererInterface(), QML의 씬 그래프 - RHI, QML의 씬 그래프 - OpenGL, QML의 씬 그래프 - Metal, QML의 씬 그래프 - VulkanQML의 씬 그래프 - Direct3D 11을참조하세요 .

[signal] void QQuickWindow::afterSynchronizing()

이 신호는 씬 그래프가 QML 상태와 동기화된 후에 방출됩니다.

이 신호는 QQuickItem::updatePaintNode() 호출 후 필요한 준비 작업을 수행하는 데 사용할 수 있으며, GUI 스레드는 아직 잠겨 있습니다.

OpenGL을 사용하는 경우 씬 그래프에서 렌더링에 사용되는 QOpenGLContext 이 이 시점에서 바인딩됩니다.

경고: 이 신호는 씬 그래프 렌더링 스레드에서 방출됩니다. 실행을 계속하기 전에 슬롯 함수를 완료해야 하는 경우 연결이 직접 연결되었는지 확인해야 합니다( Qt::ConnectionType 참조).

경고: OpenGL을 사용하는 경우, 연결된 슬롯에서 돌아올 때 OpenGL 3.x 또는 4.x 특정 상태를 설정하고 이를 활성화하거나 기본값이 아닌 값으로 설정하면 씬 그래프 렌더링에 방해가 될 수 있다는 점에 유의하세요.

[signal, since 6.0] void QQuickWindow::beforeFrameBegin()

이 신호는 씬 그래프가 프레임 준비를 시작하기 전에 방출됩니다. beforeSynchronizing () 또는 beforeRendering()과 같은 신호보다 먼저 발생합니다. 새 프레임 준비를 시작할 때 씬 그래프 렌더링 스레드에서 가장 먼저 발생하는 신호입니다.

이 신호는 Qt Quick 이 기본 렌더링 하드웨어 인터페이스 API를 통해 새 프레임의 기록을 시작하지 않은 단계에서 리소스 정리와 같은 특정 작업을 실행해야 하는 하위 수준의 그래픽 프레임워크와 관련이 있습니다.

경고: 이 신호는 씬 그래프 렌더링 스레드에서 방출됩니다. 실행을 계속하기 전에 슬롯 함수를 완료해야 하는 경우 연결이 직접 연결되었는지 확인해야 합니다( Qt::ConnectionType 참조 ).

이 함수는 Qt 6.0에 도입되었습니다.

afterFrameEnd() 및 rendererInterface()도 참조하십시오 .

[signal] void QQuickWindow::beforeRenderPassRecording()

이 신호는 시나리오 그래프가 메인 렌더 패스에 대한 명령 기록을 시작하기 전에 방출됩니다. (레이어에는 자체 패스가 있으며 이 신호가 방출될 때까지 완전히 기록됩니다.) 신호가 방출될 때 렌더 패스는 명령 버퍼에서 이미 활성화되어 있습니다.

이 신호는 beforeRendering()보다 늦게 방출되며 프레임뿐만 아니라 시나리오 그래프의 메인 렌더 패스의 기록도 활성화되어 있음을 보장합니다. 따라서 전체 렌더 패스를 별도로 생성하지 않고도 명령을 삽입할 수 있습니다(일반적으로 첨부된 이미지가 지워짐). 네이티브 그래픽 오브젝트는 QSGRendererInterface 을 통해 쿼리할 수 있습니다.

참고: 리소스 업데이트(업로드, 복사)는 일반적으로 렌더 패스 내에서 대기열에 추가할 수 없습니다. 따라서 보다 복잡한 사용자 렌더링은 beforeRendering()와 이 신호 모두에 연결해야 합니다.

경고: 이 신호는 씬 그래프 렌더링 스레드에서 방출됩니다. 슬롯 함수가 실행을 계속하기 전에 완료되어야 하는 경우 연결이 직접 연결되었는지 확인해야 합니다( Qt::ConnectionType 참조).

QML에서rendererInterface() 및 씬 그래프 - RHI를참조하세요 .

[signal] void QQuickWindow::beforeRendering()

이 신호는 프레임 준비가 완료된 후 방출되며, 해당되는 경우 녹화 모드에 명령 버퍼가 있음을 의미합니다. 원하는 경우 이 신호에 연결된 슬롯 함수는 QSGRendererInterface 을 통해 앞서 명령과 같은 네이티브 리소스를 쿼리할 수 있습니다. 단, 이 시점에서는 메인 렌더 패스의 녹화가 아직 시작되지 않았으므로 해당 패스 내에 명령을 추가할 수 없습니다. 패스를 시작한다는 것은 색상, 깊이 및 스텐실 버퍼를 지우는 것을 의미하므로 이 신호에 연결하는 것만으로는 언더레이 유형의 렌더링을 구현할 수 없습니다. 대신 beforeRenderPassRecording()에 연결하세요. 그러나 복사 유형의 명령은 렌더링 패스 내에서 대기열에 넣을 수 없으므로 이 신호에 연결하는 것이 중요합니다.

경고: 이 신호는 씬 그래프 렌더링 스레드에서 방출됩니다. 실행을 계속하기 전에 슬롯 함수가 완료되어야 하는 경우 연결이 직접 연결되었는지 확인해야 합니다( Qt::ConnectionType 참조 ).

참고: OpenGL을 사용하는 경우, 연결된 슬롯에서 돌아올 때 OpenGL 3.x 또는 4.x 특정 상태를 설정하고 이를 활성화하거나 기본값이 아닌 값으로 설정하면 씬 그래프의 렌더링에 방해가 될 수 있다는 점에 유의하세요. 씬 그래프에서 렌더링에 사용되는 QOpenGLContext 은 신호가 방출될 때 바인딩됩니다.

또한 rendererInterface(), QML의 씬 그래프 - RHI, QML의 씬 그래프 - OpenGL, QML의 씬 그래프 - Metal, QML의 씬 그래프 - VulkanQML의 씬 그래프 - Direct3D 11을참조하십시오 .

[signal] void QQuickWindow::beforeSynchronizing()

이 신호는 씬 그래프가 QML 상태와 동기화되기 전에 방출됩니다.

신호가 씬 그래프 렌더링 스레드에서 발생하더라도 QQuickItem::updatePaintNode()에서와 같이 GUI 스레드는 차단되도록 보장됩니다. 따라서 Qt::DirectConnection 으로 연결된 슬롯이나 람다에서 GUI 스레드 데이터에 액세스하는 것이 안전합니다.

이 신호는 QQuickItem::updatePaintNode()를 호출하기 전에 필요한 모든 준비를 수행하는 데 사용할 수 있습니다.

OpenGL을 사용하는 경우 씬 그래프에서 렌더링에 사용되는 QOpenGLContext 이 이 시점에서 바인딩됩니다.

경고: 이 신호는 씬 그래프 렌더링 스레드에서 방출됩니다. 실행을 계속하기 전에 슬롯 함수를 완료해야 하는 경우 연결이 직접 연결되었는지 확인해야 합니다( Qt::ConnectionType 참조 ).

경고: OpenGL을 사용하는 경우, 연결된 슬롯에서 돌아올 때 OpenGL 3.x 또는 4.x 특정 상태를 설정하고 이를 활성화하거나 기본값이 아닌 값으로 설정하면 씬 그래프 렌더링에 방해가 될 수 있다는 점에 유의하세요.

void QQuickWindow::beginExternalCommands()

원시 그래픽(OpenGL, 벌칸, 메탈 등) 명령과 씬 그래프 렌더링을 혼합하는 경우, 이 함수를 호출하여 씬 그래프가 메인 렌더 패스를 렌더링하는 데 사용하는 명령 버퍼에 명령을 기록하기 전에 이 함수를 호출해야 합니다. 이는 클로버링 상태를 피하기 위한 것입니다.

실제로 이 함수는 beforeRenderPassRecording() 또는 afterRenderPassRecording() 신호에 연결된 슬롯에서 호출되는 경우가 많습니다.

이 함수는 애플리케이션의 자체 명령 버퍼(예: 씬 그래프에서 검색되지 않고 애플리케이션에서 생성 및 관리되는 VkCommandBuffer 또는 MTLCommandBuffer + MTLRenderCommandEncoder)에 명령을 기록할 때는 호출할 필요가 없습니다. 네이티브 커맨드 버퍼 개념이 노출되지 않는 그래픽 API(OpenGL, Direct 3D 11)의 경우 startExternalCommands() 및 endExternalCommands()를 함께 사용하면 Qt 5 resetOpenGLState() 함수를 대체할 수 있습니다.

씬 그래프가 렌더 노드에 필요한 단계를 암시적으로 수행하므로 render()의 QSGRenderNode 구현 내에서 이 함수와 endExternalCommands()를 호출할 필요가 없습니다.

네이티브 그래픽 객체(예: 그래픽 장치, 명령 버퍼 또는 인코더)는 QSGRendererInterface::getResource()를 통해 액세스할 수 있습니다.

경고: QSGRendererInterface::CommandListResource 은 startExternalCommands() - endExternalCommands() 사이에 다른 객체를 반환할 수 있다는 사실에 주의하세요. 이는 기본 구현이 렌더링 패스 내에서 외부 그래픽 명령을 기록하기 위한 전용 보조 명령 버퍼를 제공하는 경우 발생할 수 있습니다. 따라서 이 함수를 호출한 후에는 항상 CommandListResource를 쿼리하세요. 이전 쿼리에서 오브젝트를 재사용하려고 시도하지 마세요.

참고: 시나리오 그래프가 OpenGL을 사용하는 경우 컨텍스트의 OpenGL 상태가 임의의 설정을 가질 수 있으며 이 함수는 상태를 기본값으로 재설정하지 않는다는 사실에 주의하세요.

endExternalCommands() 및 QQuickOpenGLUtils::resetOpenGLState()도 참조하세요 .

[override virtual protected] void QQuickWindow::closeEvent(QCloseEvent *e)

다시 구현합니다: QWindow::closeEvent(QCloseEvent *ev).

QSGImageNode *QQuickWindow::createImageNode() const

간단한 이미지 노드를 생성합니다. 시나리오 그래프가 초기화되지 않은 경우 반환값은 null입니다.

이는 QSGSimpleTextureNode 을 직접 구성하는 대신 사용할 수 있는 크로스 백엔드 대안입니다.

QSGImageNode참조하세요 .

QSGNinePatchNode *QQuickWindow::createNinePatchNode() const

9개의 패치 노드를 생성합니다. 시나리오 그래프가 초기화되지 않은 경우 반환 값은 null입니다.

QSGRectangleNode *QQuickWindow::createRectangleNode() const

간단한 직사각형 노드를 생성합니다. 시나리오 그래프가 초기화되지 않은 경우 반환 값은 null입니다.

이는 QSGSimpleRectNode 을 직접 구성하는 대신 사용할 수 있는 크로스 백엔드 대안입니다.

QSGRectangleNode참조하세요 .

[since 6.7] QSGTextNode *QQuickWindow::createTextNode() const

텍스트 노드를 생성합니다. 시나리오 그래프가 초기화되지 않으면 반환값은 null입니다.

이 함수는 Qt 6.7에 도입되었습니다.

QSGTextNode참조하십시오 .

QSGTexture *QQuickWindow::createTextureFromImage(const QImage &image, QQuickWindow::CreateTextureOptions options) const

제공된 image 에서 QSGTexture 을 새로 만듭니다. 이미지에 알파 채널이 있는 경우 해당 텍스처에 알파 채널이 생깁니다.

함수 호출자는 반환된 텍스처를 삭제할 책임이 있습니다. 그러면 기본 네이티브 텍스처 오브젝트는 QSGTexture 와 함께 소멸됩니다.

optionsTextureCanUseAtlas 이 포함된 경우 엔진은 이미지를 텍스처 아틀라스에 넣을 수 있습니다. 아틀라스의 텍스처는 지오메트리를 QSGTexture::normalizedTextureSubRect()에 의존해야 하며 QSGTexture::Repeat 을 지원하지 않습니다. CreateTextureOption 의 다른 값은 무시됩니다.

optionsTextureIsOpaque 이 포함된 경우 엔진은 QSGTexture::hasAlphaChannel()에 대해 false를 반환하는 RGB 텍스처를 생성합니다. 대부분의 경우 불투명 텍스처가 렌더링 속도가 더 빠릅니다. 이 플래그를 설정하지 않으면 텍스처는 이미지의 형식에 따라 알파 채널을 갖습니다.

optionsTextureHasMipmaps 이 포함된 경우 엔진은 밉맵 필터링을 사용할 수 있는 텍스처를 생성합니다. 밉맵 텍스처는 아틀라스에 포함될 수 없습니다.

options 에서 TextureHasAlphaChannel 을 설정하는 것은 알파 채널과 블렌딩을 기본으로 가정하므로 이 기능의 용도가 없습니다. 사용하지 않으려면 TextureIsOpaque 을 설정합니다.

씬 그래프가 OpenGL을 사용하는 경우 반환되는 텍스처는 GL_TEXTURE_2D 을 텍스처 대상으로 사용하고 GL_RGBA 을 내부 형식으로 사용합니다. 다른 그래픽 API를 사용하는 경우 텍스처 형식은 일반적으로 RGBA8 입니다. 다른 파라미터로 텍스처를 만들려면 QSGTexture 을 다시 구현하세요.

경고: 씬 그래프가 아직 초기화되지 않은 경우 이 함수는 0을 반환합니다.

경고: 반환된 텍스처는 씬 그래프에서 관리하는 메모리가 아니므로 호출자가 렌더링 스레드에서 명시적으로 삭제해야 합니다. 이는 QSGNode 소멸자에서 텍스처를 삭제하거나 텍스처가 이미 렌더링 스레드에 친화성이 있는 경우 deleteLater()를 사용하여 수행됩니다.

이 함수는 메인 스레드와 렌더 스레드 모두에서 호출할 수 있습니다.

sceneGraphInitialized() 및 QSGTexture참조하세요 .

QSGTexture *QQuickWindow::createTextureFromImage(const QImage &image) const

과부하가 걸린 기능입니다.

[since 6.6] QSGTexture *QQuickWindow::createTextureFromRhiTexture(QRhiTexture *texture, QQuickWindow::CreateTextureOptions options = {}) const

제공된 texture 에서 QSGTexture 을 새로 만듭니다.

텍스처 속성을 사용자 지정하려면 options 을 사용합니다. 이 함수에서는 TextureHasAlphaChannel 플래그만 고려됩니다. 설정하면 결과물인 QSGTexture 은 항상 씬 그래프 렌더러에서 블렌딩이 필요한 것으로 처리됩니다. 완전히 불투명한 텍스처의 경우 플래그를 설정하지 않으면 렌더링 중에 알파 블렌딩을 수행하는 데 드는 비용을 절약할 수 있습니다. 이 플래그는 QRhiTextureformat 와 직접적으로 대응하지 않으므로 일반적으로 사용되는 QRhiTexture::RGBA8 와 같은 텍스처 형식을 사용하면서 플래그를 설정하지 않는 것은 지극히 정상입니다.

texture 은 이미 생성되어 있고 밉맵의 유무가 구워져 있기 때문에 options 은 밉맵을 제어하지 않습니다.

반환된 QSGTextureQRhiTexture 을 소유하므로 texture 은 반환된 QSGTexture 과 함께 소멸됩니다.

texture 이 기본 네이티브 그래픽 리소스(OpenGL 텍스처 객체, Vulkan 이미지 등)를 소유하는 경우 이는 QRhiTexture 이 생성된 방법(QRhiTexture::create() 또는 QRhiTexture::createFrom())에 따라 달라지며 이 함수에 의해 제어되거나 변경되지 않습니다.

참고: 이 함수는 씬 그래프가 이미 초기화되어 있고 기본값인 QRhi 기반 적응을 사용하고 있는 경우에만 작동합니다. 그렇지 않은 경우 반환 값은 nullptr 입니다.

참고: 이 함수는 씬 그래프 렌더 스레드에서만 호출할 수 있습니다.

이 함수는 Qt 6.6에 도입되었습니다.

createTextureFromImage(), sceneGraphInitialized() 및 QSGTexture참조하십시오 .

qreal QQuickWindow::effectiveDevicePixelRatio() const

이 창의 디바이스 픽셀 비율을 반환합니다.

QQuickRenderControlQQuickRenderTarget 을 통한 리디렉션 렌더링을 지원한다는 점에서 QWindow::devicePixelRatio()와 다릅니다. QQuickRenderControl 을 사용하는 경우 QQuickWindow 이 완전히 생성되지 않은 경우가 많으므로 표시되지 않고 창 시스템에서 기본 기본 창이 생성되지 않습니다. 따라서 디바이스 픽셀 비율과 같은 속성을 쿼리해도 올바른 결과를 얻을 수 없습니다. 이 함수는 QQuickRenderControl::renderWindowFor()와 QQuickRenderTarget::devicePixelRatio()를 모두 고려합니다. 리디렉션이 적용되지 않은 경우 결과는 QWindow::devicePixelRatio()와 동일합니다.

QQuickRenderControl, QQuickRenderTarget, setRenderTarget() 및 QWindow::devicePixelRatio()도 참조하세요 .

void QQuickWindow::endExternalCommands()

원시 그래픽(OpenGL, 벌칸, 메탈 등) 명령과 씬 그래프 렌더링을 혼합하는 경우, 씬 그래프가 메인 렌더 패스를 렌더링하는 데 사용하는 명령 버퍼에 명령을 기록한 후 이 함수를 호출해야 합니다. 이는 클로버링 상태를 피하기 위한 것입니다.

실제로 이 함수는 beforeRenderPassRecording() 또는 afterRenderPassRecording() 신호에 연결된 슬롯에서 호출되는 경우가 많습니다.

이 함수는 애플리케이션의 자체 명령 버퍼(예: 씬 그래프에서 검색되지 않고 애플리케이션에서 생성 및 관리되는 VkCommandBuffer 또는 MTLCommandBuffer + MTLRenderCommandEncoder)에 명령을 기록할 때는 호출할 필요가 없습니다. 기본 명령 버퍼 개념이 노출되지 않는 그래픽 API(OpenGL, Direct 3D 11)의 경우 beginExternalCommands() 및 endExternalCommands()를 함께 사용하면 Qt 5 resetOpenGLState() 함수를 대체할 수 있습니다.

씬 그래프가 렌더 노드에 필요한 단계를 암시적으로 수행하므로 render()의 QSGRenderNode 구현 내에서 이 함수와 beginExternalCommands()를 호출할 필요가 없습니다.

beginExternalCommands() 및 QQuickOpenGLUtils::resetOpenGLState()도 참조하세요 .

[override virtual protected] bool QQuickWindow::event(QEvent *event)

다시 구현합니다: QWindow::event(QEvent *ev).

[override virtual protected] void QQuickWindow::exposeEvent(QExposeEvent *)

다시 구현합니다: QWindow::exposeEvent(QExposeEvent *ev).

[override virtual protected] void QQuickWindow::focusInEvent(QFocusEvent *ev)

다시 구현합니다: QWindow::focusInEvent(QFocusEvent *ev).

[override virtual protected] void QQuickWindow::focusOutEvent(QFocusEvent *ev)

다시 구현합니다: QWindow::focusOutEvent(QFocusEvent *ev).

[signal] void QQuickWindow::frameSwapped()

이 신호는 프레젠테이션을 위해 프레임이 대기 중일 때 방출됩니다. 수직 동기화가 활성화된 경우 이 신호는 연속적으로 애니메이션이 진행되는 씬에서 동기화 간격당 최대 한 번만 발생합니다.

이 신호는 씬 그래프 렌더링 스레드에서 방출됩니다.

QImage QQuickWindow::grabWindow()

창의 내용을 가져와 이미지로 반환합니다.

창이 보이지 않을 때 grabWindow() 함수를 호출할 수 있습니다. 이를 위해서는 창이 created 이고 유효한 크기여야 하며 동일한 프로세스에서 렌더링 중인 다른 QQuickWindow 인스턴스가 없어야 합니다.

참고: 이 창을 QQuickRenderControl 와 함께 사용하는 경우 software 백엔드가 사용 중이 아니라면 이 함수의 결과는 빈 이미지가 됩니다. 이는 QQuickRenderControlsetRenderTarget()을 사용하여 애플리케이션이 관리하는 그래픽 리소스(예: 텍스처)로 출력을 리디렉션하는 경우 애플리케이션이 처음부터 리소스를 완전히 제어할 수 있으므로 최종 읽기 작업을 관리하고 실행하는 데 더 적합하기 때문입니다.

경고: 이 함수를 호출하면 성능 문제가 발생할 수 있습니다.

경고: 이 함수는 GUI 스레드에서만 호출할 수 있습니다.

[static, since 6.0] QSGRendererInterface::GraphicsApi QQuickWindow::graphicsApi()

씬 그래프가 이 시점에 초기화되었을 경우 씬 그래프에서 사용할 그래픽 API를 반환합니다.

씬 그래프에서 사용하는 API를 쿼리하는 표준 방법은 씬 그래프가 초기화되면 QSGRendererInterface::graphicsApi()를 사용하는 것입니다(예: sceneGraphInitialized() 신호가 발신될 때 또는 그 이후에). 이 경우 모든 것이 해당 그래픽 API를 사용하여 올바르게 초기화되었음을 알 수 있으므로 실제 결과를 얻을 수 있습니다.

이것이 항상 편리한 것은 아닙니다. 애플리케이션에서 외부 프레임워크를 설정해야 하거나 씬 그래프에 내장된 API 선택 로직에 따라 setGraphicsDevice()로 작업해야 하는 경우, QQuickWindow 가 표시되거나 QQuickRenderControl::initialize()가 호출될 때까지 이러한 작업을 연기하는 것이 항상 가능한 것은 아닙니다.

따라서 이 정적 함수는 setGraphicsApi()에 대응하는 함수로 제공되며, 언제든지 호출할 수 있고 호출 시점에 씬 그래프가 초기화되어 있다면 어떤 API를 선택할지 결과를 반영합니다.

참고: 이 정적 함수는 메인(GUI) 스레드에서만 호출하도록 되어 있습니다. 렌더링할 때 API를 쿼리하려면 해당 객체가 렌더 스레드에 있으므로 QSGRendererInterface 을 사용하세요.

참고: 이 함수는 씬 그래프 백엔드를 고려하지 않습니다.

이 함수는 Qt 6.0에 도입되었습니다.

setGraphicsApi()도 참조하세요 .

[since 6.0] QQuickGraphicsConfiguration QQuickWindow::graphicsConfiguration() const

setGraphicsConfiguration()에 전달된 QQuickGraphicsConfiguration 또는 그렇지 않으면 기본값으로 구성된 것을 반환합니다.

이 함수는 Qt 6.0에 도입되었습니다.

setGraphicsConfiguration()도 참조하십시오 .

[since 6.0] QQuickGraphicsDevice QQuickWindow::graphicsDevice() const

setGraphicsDevice()에 전달된 QQuickGraphicsDevice 또는 그렇지 않으면 기본으로 구성된 것을 반환합니다.

이 함수는 Qt 6.0에 도입되었습니다.

setGraphicsDevice()도 참조하십시오 .

const QQuickWindow::GraphicsStateInfo &QQuickWindow::graphicsStateInfo()

RHI의 일부 내부 상태, 특히 백엔드(예: Vulkan 또는 Metal 통합)의 더블 또는 트리플 버퍼링 상태를 설명하는 GraphicsStateInfo 구조체에 대한 참조를 반환합니다. 이는 기본 그래픽 API가 Vulkan 또는 Metal이고 외부 렌더링 코드가 파이프라인을 멈추지 않기 위해 균일 버퍼와 같이 자주 변경되는 자체 리소스에 대해 이중 또는 삼중 버퍼링을 수행하려는 경우와 관련이 있습니다.

[static] bool QQuickWindow::hasDefaultAlphaBuffer()

새로 만든 창에 알파 투명도를 사용할지 여부를 반환합니다.

setDefaultAlphaBuffer()도 참조하세요 .

[override virtual protected] void QQuickWindow::hideEvent(QHideEvent *)

다시 구현합니다: QWindow::hideEvent(QHideEvent *ev).

QQmlIncubationController *QQuickWindow::incubationController() const

이 창의 프레임 간에 인큐베이션을 연결하는 인큐베이션 컨트롤러를 반환합니다. QQuickView 이 컨트롤러는 자동으로 설치되며, 그렇지 않으면 QQmlEngine::setIncubationController()을 사용하여 직접 설치해야 합니다.

컨트롤러는 창이 소유하며 창이 삭제되면 삭제됩니다.

bool QQuickWindow::isPersistentGraphics() const

QQuickWindow 의 수명 기간 동안 필수 그래픽 리소스를 릴리스할 수 있는지 여부를 반환합니다.

참고: 이것은 힌트일 뿐이며 반드시 고려된다는 보장은 없습니다.

setPersistentGraphics()도 참조하세요 .

bool QQuickWindow::isPersistentSceneGraph() const

QQuickWindow 의 수명 기간 동안 씬 그래프 노드와 리소스를 릴리스할 수 있는지 여부를 반환합니다.

참고: 이것은 힌트입니다. 언제 어떻게 발생하는지는 구현에 따라 다릅니다.

bool QQuickWindow::isSceneGraphInitialized() const

씬 그래프가 초기화되면 참을 반환하고, 그렇지 않으면 거짓을 반환합니다.

[override virtual protected] void QQuickWindow::keyPressEvent(QKeyEvent *e)

다시 구현합니다: QWindow::keyPressEvent(QKeyEvent *ev).

[override virtual protected] void QQuickWindow::keyReleaseEvent(QKeyEvent *e)

다시 구현합니다: QWindow::keyReleaseEvent(QKeyEvent *ev).

[override virtual protected] void QQuickWindow::mouseDoubleClickEvent(QMouseEvent *event)

다시 구현합니다: QWindow::mouseDoubleClickEvent(QMouseEvent *ev).

[override virtual protected] void QQuickWindow::mouseMoveEvent(QMouseEvent *event)

다시 구현합니다: QWindow::mouseMoveEvent(QMouseEvent *ev).

[override virtual protected] void QQuickWindow::mousePressEvent(QMouseEvent *event)

다시 구현합니다: QWindow::mousePressEvent(QMouseEvent *ev).

[override virtual protected] void QQuickWindow::mouseReleaseEvent(QMouseEvent *event)

다시 구현합니다: QWindow::mouseReleaseEvent(QMouseEvent *ev).

[slot] void QQuickWindow::releaseResources()

이 함수는 현재 QML 씬이 보유한 중복 리소스를 해제하려고 시도합니다.

이 함수를 호출하면 그래픽 파이프라인 오브젝트, 셰이더 프로그램 또는 이미지 데이터와 같은 캐시된 그래픽 리소스를 해제하도록 씬 그래프에 요청합니다.

또한 사용 중인 렌더 루프에 따라 이 함수를 호출하면 씬 그래프와 모든 창 관련 렌더링 리소스가 해제될 수도 있습니다. 이 경우 sceneGraphInvalidated() 신호가 발생하여 사용자가 자체적으로 그래픽 리소스를 정리할 수 있습니다. 애플리케이션에서 정리를 처리할 수 없는 경우 setPersistentGraphics() 및 setPersistentSceneGraph() 함수를 사용하여 이를 방지할 수 있지만 메모리 사용량이 증가합니다.

참고: 그래픽 파이프라인이나 셰이더 프로그램과 같이 캐시된 그래픽 리소스의 해제 여부는 지속성 힌트에 의존하지 않습니다. 이러한 리소스는 지속성 그래픽 및 시나리오 힌트의 값에 관계없이 해제됩니다.

참고: 이 함수는 QQuickItem::releaseResources() 가상 함수와 관련이 없습니다.

sceneGraphInvalidated(), setPersistentGraphics() 및 setPersistentSceneGraph()도 참조하세요 .

[since 6.0] QQuickRenderTarget QQuickWindow::renderTarget() const

setRenderTarget()에 전달된 QQuickRenderTarget 또는 그렇지 않으면 기본으로 구성된 것을 반환합니다.

이 함수는 Qt 6.0에 도입되었습니다.

setRenderTarget()도 참조하십시오 .

QSGRendererInterface *QQuickWindow::rendererInterface() const

현재 렌더러 인터페이스를 반환합니다. 이 값은 항상 유효하며 절대 null이 아닙니다.

참고: 이 함수는 isSceneGraphInitialized()가 여전히 거짓인 상태에서도 QQuickWindow 를 구성한 후 언제든지 호출할 수 있습니다. 그러나 일부 렌더러 인터페이스 함수, 특히 QSGRendererInterface::getResource()는 시나리오가 실행될 때까지 작동하지 않습니다. 반면 QSGRendererInterface::graphicsApi() 또는 QSGRendererInterface::shaderType()와 같은 백엔드 쿼리는 항상 정상적으로 작동합니다.

참고: 반환된 포인터의 소유권은 Qt에 유지됩니다. 반환된 인스턴스는 사용 중인 시나리오 백엔드에 따라 다른 QQuickWindow 인스턴스 간에 공유될 수도 있고 공유되지 않을 수도 있습니다. 따라서 애플리케이션은 이미 쿼리된 포인터를 재사용하는 대신 각 QQuickWindow 에 대해 인터페이스 객체를 쿼리해야 합니다.

QSGRenderNodeQSGRendererInterface참조하세요 .

[override virtual protected] void QQuickWindow::resizeEvent(QResizeEvent *ev)

다시 구현합니다: QWindow::resizeEvent(QResizeEvent *ev).

[since 6.6] QRhi *QQuickWindow::rhi() const

이 창이 렌더링에 사용하는 QRhi 객체를 반환합니다.

창이 Qt의 3D API 및 음영 언어 추상화를 사용할 때만 사용할 수 있으므로 software 적응을 사용할 때는 결과가 항상 null입니다.

결과는 렌더링이 초기화되었을 때만 유효하며, 이는 sceneGraphInitialized() 신호의 방출로 표시됩니다. 그 이전에는 반환된 값이 null입니다. 일반적인 온스크린 QQuickWindow 시나리오 그래프 초기화는 일반적으로 네이티브 창이 처음 노출(표시)될 때 발생합니다. QQuickRenderControl 을 사용하는 경우 초기화는 명시적인 initialize() 호출에서 수행됩니다.

실제로 이 함수는 QSGRendererInterface 을 통해 QRhi 을 쿼리하는 지름길입니다.

이 함수는 Qt 6.6에 도입되었습니다.

[signal] void QQuickWindow::sceneGraphAboutToStop()

이 신호는 씬 그래프가 렌더링을 중지하려고 할 때 렌더 스레드에서 발생합니다. 일반적으로 창이 숨겨졌을 때 발생합니다.

애플리케이션은 이 신호를 사용하여 리소스를 해제할 수 있지만 빠르게 다시 복원할 수 있도록 준비해야 합니다. 이때 씬 그래프와 그래픽 컨텍스트는 해제되지 않습니다.

경고: 이 신호는 씬 그래프 렌더링 스레드에서 방출됩니다. 실행을 계속하기 전에 슬롯 함수를 완료해야 하는 경우 연결이 직접 연결되었는지 확인해야 합니다( Qt::ConnectionType 참조 ).

경고: 장면 그래프에 대한 신호 처리기가 장면 그래프AboutToStop()의 신호 처리기를 입력했을 때와 동일한 상태로 그래픽 컨텍스트를 떠나는지 반드시 확인하세요. 그렇지 않으면 씬이 제대로 렌더링되지 않을 수 있습니다.

sceneGraphInvalidated()도 참조하세요 .

[static] QString QQuickWindow::sceneGraphBackend()

요청된 Qt Quick 시나리오 백엔드를 반환합니다.

참고: 이 함수의 반환 값은 애플리케이션에서 첫 번째 QQuickWindow 이 구성될 때까지 setSceneGraphBackend() 호출에 의해 여전히 오래된 값일 수 있습니다.

참고: 이 값은 QQuickWindow 이 구성된 후 QT_QUICK_BACKEND 환경 변수에 있는 요청만 반영합니다.

setSceneGraphBackend()도 참조하세요 .

[signal] void QQuickWindow::sceneGraphError(QQuickWindow::SceneGraphError error, const QString &message)

이 신호는 씬 그래프 초기화 중 error 이 발생했을 때 발생합니다.

그래픽 컨텍스트 생성 실패와 같은 오류를 사용자 지정 방식으로 처리하려는 경우 애플리케이션이 이 신호에 연결해야 합니다. 신호에 연결된 슬롯이 없는 경우 동작이 달라집니다: 빠른 실행은 message 을 인쇄하거나 메시지 상자를 표시하고 애플리케이션을 종료합니다.

이 신호는 GUI 스레드에서 방출됩니다.

[signal] void QQuickWindow::sceneGraphInitialized()

이 신호는 씬 그래프가 초기화되었을 때 발생합니다.

이 신호는 씬 그래프 렌더링 스레드에서 방출됩니다.

[signal] void QQuickWindow::sceneGraphInvalidated()

이 신호는 씬 그래프가 무효화되었을 때 발생합니다.

이 신호는 사용된 그래픽 렌더링 컨텍스트가 무효화되었음을 의미하며 해당 컨텍스트에 연결된 모든 사용자 리소스를 해제해야 함을 의미합니다.

OpenGL로 렌더링하는 경우 이 함수가 호출될 때 이 창의 QOpenGLContext 이 바인딩됩니다. 유일한 예외는 네이티브 OpenGL이 Qt의 통제 밖에서 파괴된 경우, 예를 들어 EGL_CONTEXT_LOST를 통해 파괴된 경우입니다.

이 신호는 씬 그래프 렌더링 스레드에서 방출됩니다.

void QQuickWindow::scheduleRenderJob(QRunnable *job, QQuickWindow::RenderStage stage)

이 창의 렌더링이 지정된 stage 에 도달하면 job 이 실행되도록 스케줄링합니다.

이는 "원샷" 작업을 위한 QQuickWindow 의 동등한 신호에 대한 편의성입니다.

이 창은 job 에 대한 소유권을 가지며 작업이 완료되면 삭제됩니다.

job 이 실행되기 전에 렌더링이 종료되면 작업이 실행된 후 씬 그래프 정리의 일부로 삭제됩니다. 창이 표시되지 않고 QQuickWindow 가 삭제되기 전에 렌더링이 발생하지 않으면 모든 보류 중인 작업은 실행() 메서드가 호출되지 않고 삭제됩니다.

렌더링이 다른 스레드에서 일어나고 있는 경우 작업은 렌더링 스레드에서 발생합니다.

stageNoStage 인 경우 job 는 렌더링 스레드가 프레임을 렌더링하는 데 바쁘지 않을 때마다 가장 빠른 기회에 실행됩니다. 작업이 게시되거나 처리될 때 창이 노출되지 않고 렌더링할 수 없는 경우, 작업은 실행() 메서드를 실행하지 않고 삭제됩니다. 스레드가 없는 렌더러가 사용 중이면 작업의 run() 메서드가 동기적으로 실행됩니다. OpenGL로 렌더링하는 경우 NoStage 작업을 포함한 모든 작업을 실행하기 전에 OpenGL 컨텍스트가 렌더러의 컨텍스트로 변경됩니다.

참고: 이 함수는 렌더링을 트리거하지 않으며, NoStage 이외의 다른 단계를 대상으로 하는 작업은 다른 곳에서 렌더링이 트리거될 때까지 저장된 상태로 실행됩니다. 작업을 강제로 더 일찍 실행하려면 QQuickWindow::update()를 호출하세요;

beforeRendering(), afterRendering(), beforeSynchronizing(), afterSynchronizing(), frameSwapped() 및 sceneGraphInvalidated()도 참조하세요 .

[static] void QQuickWindow::setDefaultAlphaBuffer(bool useAlpha)

useAlpha 는 새로 생성되는 창에 알파 투명도를 사용할지 여부를 지정합니다.

반투명 창을 만들려는 모든 애플리케이션에서는 첫 번째 QQuickWindow 을 만들기 전에 이 값을 true로 설정해야 합니다. 기본값은 false입니다.

hasDefaultAlphaBuffer()도 참조하세요 .

[static, since 6.0] void QQuickWindow::setGraphicsApi(QSGRendererInterface::GraphicsApi api)

지정된 그래픽을 요청합니다 api.

내장된 기본 그래픽 적응을 사용하는 경우 api 은 씬 그래프가 렌더링하는 데 사용할 그래픽 API(OpenGL, Vulkan, Metal 또는 Direct3D)를 지정합니다. 또한 software 백엔드도 기본 제공되며 apiQSGRendererInterface::Software 으로 설정하여 요청할 수 있습니다.

setSceneGraphBackend()는 특정 백엔드(내장 또는 동적으로 로드된 플러그인으로 제공되거나 설치된)를 요청하는 데만 사용할 수 있는 것과 달리, 이 함수는 그래픽 API의 상위 개념과 함께 작동합니다. Qt Quick 와 함께 제공되는 백엔드에 적용되며, 따라서 QSGRendererInterface::GraphicsApi 열거형에 해당 값이 있습니다.

이 함수가 전혀 호출되지 않고 동등한 환경 변수 QSG_RHI_BACKEND 도 설정되지 않은 경우, 씬 그래프는 플랫폼에 따라 사용할 그래픽 API를 선택합니다.

이 함수는 특정 API로만 렌더링할 준비가 되어 있는 애플리케이션에서 중요합니다. 예를 들어 애플리케이션에서 네이티브 OpenGL 또는 Vulkan 렌더링이 수행되는 경우 Qt Quick 역시 OpenGL 또는 Vulkan을 사용하여 렌더링하는지 확인해야 합니다. 이러한 애플리케이션은 main() 함수 초반에 이 함수를 호출해야 합니다.

참고: 이 함수에 대한 호출은 애플리케이션에서 첫 번째 QQuickWindow 를 구성하기 전에 이루어져야 합니다. 이후에는 그래픽 API를 변경할 수 없습니다.

참고: QQuickRenderControl 와 함께 사용하면 이 규칙이 완화되어 그래픽 API를 변경할 수 있지만 기존의 QQuickRenderControlQQuickWindow 인스턴스가 모두 소멸된 경우에만 변경할 수 있습니다.

씬 그래프가 렌더링에 사용하는 그래픽 API를 쿼리하려면 일반적으로 창이 처음 표시될 때 또는 QQuickRenderControl::initialize() 호출 시 씬 그래프 has initialized 뒤에 QSGRendererInterface::graphicsApi() 를 추가합니다.

씬 그래프가 플랫폼 및 기타 조건에 따라 그래픽 API를 선택하는 기본 동작으로 다시 전환하려면 apiQSGRendererInterface::Unknown 으로 설정합니다.

이 함수는 Qt 6.0에 도입되었습니다.

graphicsApi()도 참조하십시오 .

[since 6.0] void QQuickWindow::setGraphicsConfiguration(const QQuickGraphicsConfiguration &config)

이 창의 그래픽 구성을 설정합니다. config 에는 기본 그래픽 장치 및 컨텍스트를 초기화할 때 씬 그래프에서 고려할 수 있는 다양한 설정이 포함되어 있습니다.

예를 들어 Vulkan에서 활성화할 디바이스 확장을 지정하는 추가 구성은 특정 확장에 의존하는 네이티브 그래픽 렌더링 코드를 통합할 때 관련성이 높고 필수적입니다. OpenXR과 같은 외부 3D 또는 VR 엔진과 통합할 때도 마찬가지입니다.

참고: setGraphicsDevice()를 통해 기존 그래픽 장치를 채택할 때는 씬 그래프가 해당 객체의 실제 구성을 제어하지 않으므로 구성이 무시됩니다.

QQuickGraphicsConfiguration 인스턴스는 암시적으로 공유되고 복사할 수 있으며 값으로 전달할 수 있습니다.

경고: QQuickWindow 에서 QQuickGraphicsConfiguration 을 설정하려면 해당 창에 대해 씬 그래프가 처음 초기화되기 전에 충분히 일찍 이루어져야 합니다. 즉, 화면 창에서는 QQuickWindow 또는 QQuickView 에서 show()를 호출하기 전에 호출이 완료되어야 합니다. QQuickRenderControl 에서는 initialize()를 호출하기 전에 구성이 완료되어야 합니다.

이 함수는 Qt 6.0에 도입되었습니다.

graphicsConfiguration()도 참조하십시오 .

[since 6.0] void QQuickWindow::setGraphicsDevice(const QQuickGraphicsDevice &device)

이 창에 대한 그래픽 장치 개체를 설정합니다. 시나리오 그래프는 새 개체를 만드는 대신 기존 장치, 물리적 장치 및 device 에서 지정한 기타 개체를 사용합니다.

이 함수는 Qt Quick 렌더링을 텍스처로 리디렉션하기 위해 QQuickRenderControlsetRenderTarget()과 함께 자주 사용됩니다.

기본으로 구성된 QQuickGraphicsDevice 은 어떤 방식으로도 기본 동작을 변경하지 않습니다. QQuickGraphicsDevice::fromDeviceObjects ()와 같은 QQuickGraphicsDevice 팩토리 함수 중 하나를 통해 생성된 device 이 전달되고 시나리오 그래프가 일치하는 그래픽 API(예: fromDeviceObjects()의 경우 Vulkan)를 사용하면 시나리오 그래프는 QQuickGraphicsDevice 에 의해 캡슐화된 기존 장치 객체(예: VkPhysicalDevice, VkDevice, 그래픽 큐 패밀리 인덱스, Vulkan의 경우)를 사용하게 됩니다. 이렇게 하면 동일한 디바이스를 사용할 수 있으므로 Qt Quick 와 네이티브 렌더링 엔진 간에 버퍼 및 텍스처와 같은 리소스를 공유할 수 있습니다.

경고: 이 함수는 시나리오 그래프를 초기화하기 전에만 호출할 수 있으며 그 이후에 호출하면 아무런 효과가 없습니다. 실제로는 일반적으로 QQuickRenderControl::initialize() 바로 전에 호출하는 것을 의미합니다.

예를 들어 이번 Direct3D의 경우 일반적인 사용법은 다음과 같을 것으로 예상됩니다:

// native graphics resources set up by a custom D3D rendering engine
ID3D11Device *device;
ID3D11DeviceContext *context;
ID3D11Texture2D *texture;
...
// now to redirect Qt Quick content into 'texture' we could do the following:
QQuickRenderControl *renderControl = new QQuickRenderControl;
QQuickWindow *window = new QQuickWindow(renderControl); // this window will never be shown on-screen
...
window->setGraphicsDevice(QQuickGraphicsDevice::fromDeviceAndContext(device, context));
renderControl->initialize();
window->setRenderTarget(QQuickRenderTarget::fromD3D11Texture(texture, textureSize);
...

이 함수를 사용할 때 가장 중요한 점은 위 예시의 texture 같은 리소스나 리소스에 대한 핸들을 외부 렌더링 엔진과 시나리오 렌더러 모두에서 볼 수 있고 사용할 수 있도록 하는 것입니다. 이를 위해서는 동일한 그래픽 디바이스를 사용해야 합니다(또는 OpenGL, OpenGL 컨텍스트 사용).

QQuickGraphicsDevice 인스턴스는 암시적으로 공유되고 복사할 수 있으며 값으로 전달될 수 있습니다. 연관된 네이티브 오브젝트(예: 예제에서 ID3D11Device)를 소유하지 않습니다.

참고: QQuickRenderControl 을 사용한다고 해서 항상 이 함수를 호출해야 하는 것은 아닙니다. 기존 디바이스나 컨텍스트를 채택할 필요가 없는 경우에는 이 함수를 호출하지 않아야 하며, 그러면 씬 그래프는 온스크린 QQuickWindow 에서와 마찬가지로 자체 디바이스와 컨텍스트를 정상적으로 초기화합니다.

이 함수는 Qt 6.0에 도입되었습니다.

graphicsDevice(), QQuickRenderControl, setRenderTarget() 및 setGraphicsApi()도 참조하십시오 .

void QQuickWindow::setPersistentGraphics(bool persistent)

그래픽 리소스(그래픽 디바이스 또는 컨텍스트, 스왑체인, 버퍼, 텍스처)를 보존하고 마지막 창이 삭제될 때까지 해제할 수 없는지 여부를 persistent 로 설정합니다. 기본값은 true입니다.

releaseResources()를 호출하거나 창이 숨겨질 때(더 구체적으로 렌더링할 수 없는 경우) 일부 렌더 루프는 캐시된 그래픽 리소스뿐만 아니라 모든 리소스를 해제할 수 있습니다. 이렇게 하면 일시적으로 메모리를 확보할 수 있지만 창을 다시 렌더링해야 할 때 렌더링 엔진이 리소스를 완전히 다시 초기화해야 하므로 비용이 많이 들 수 있습니다.

참고: 창을 렌더링할 수 없는 경우에 대한 규칙은 플랫폼 및 창 관리자별로 다릅니다.

참고: 이 설정에 관계없이 마지막 QQuickWindow 이 삭제되면 모든 그래픽 리소스가 해제됩니다.

참고: 이는 힌트일 뿐이며 반드시 고려된다는 보장은 없습니다.

참고: 이 힌트는 삭제했다가 나중에 다시 생성하는 데 상대적으로 비용이 적게 드는 캐시된 리소스에는 적용되지 않습니다. 따라서 releaseResources()를 호출하면 일반적으로 이 힌트의 값에 관계없이 해당 리소스가 해제됩니다.

isPersistentGraphics(), setPersistentSceneGraph(), sceneGraphInitialized(), sceneGraphInvalidated() 및 releaseResources()도 참조하세요 .

void QQuickWindow::setPersistentSceneGraph(bool persistent)

씬 그래프 노드와 리소스가 persistent 인지 여부를 설정합니다. 영구는 노드와 리소스를 해제할 수 없음을 의미합니다. 기본값은 true 입니다.

releaseResources()를 호출할 때 창이 숨겨지면(더 구체적으로 렌더링할 수 없는 경우) 일부 렌더 루프는 씬 그래프 노드 및 관련 그래픽 리소스를 해제할 수 있습니다. 이렇게 하면 일시적으로 메모리가 확보되지만 다음에 창이 렌더링될 때 씬 그래프를 다시 빌드해야 한다는 의미도 됩니다.

참고: 창을 렌더링할 수 없는 경우에 대한 규칙은 플랫폼 및 창 관리자별로 다릅니다.

참고: 씬 그래프 노드와 리소스는 이 설정과 관계없이 마지막 QQuickWindow 이 삭제되면 항상 해제됩니다.

참고: 이는 힌트일 뿐이며 반드시 고려된다는 보장은 없습니다.

isPersistentSceneGraph(), setPersistentGraphics(), sceneGraphInvalidated(), sceneGraphInitialized() 및 releaseResources()도 참조하세요 .

[since 6.0] void QQuickWindow::setRenderTarget(const QQuickRenderTarget &target)

이 창의 렌더링 대상을 target 로 설정합니다.

QQuickRenderTarget 은 렌더링 가능한 네이티브 객체(가장 일반적으로 2D 텍스처)와 픽셀 단위 크기와 같은 관련 메타데이터에 대한 불투명 핸들 역할을 합니다.

기본적으로 구성된 QQuickRenderTarget 은 리디렉션이 없음을 의미합니다. 반면 정적 QQuickRenderTarget 팩토리 함수 중 하나를 통해 생성된 유효한 targetQt Quick 장면의 렌더링을 리디렉션할 수 있으며, 더 이상 창과 연결된 표면의 컬러 버퍼가 아니라 target 에 지정된 텍스처 또는 기타 그래픽 객체를 대상으로 합니다.

예를 들어 시나리오 그래프가 Vulkan을 사용하여 렌더링한다고 가정하면, 그 출력을 VkImage 로 리디렉션할 수 있습니다. Vulkan과 같은 그래픽 API의 경우 이미지 레이아웃도 제공해야 합니다. QQuickRenderTarget 인스턴스는 암시적으로 공유되며 복사할 수 있고 값으로 전달할 수 있습니다. 그러나 관련 네이티브 객체(예: 예제의 VkImage)를 소유하지는 않습니다.

QQuickRenderTarget rt = QQuickRenderTarget::fromVulkanImage(vulkanImage, VK_IMAGE_LAYOUT_PREINITIALIZED, pixelSize);
quickWindow->setRenderTarget(rt);

이 함수는 QQuickRenderControl 및 보이지 않는 QQuickWindow 과 함께 자주 사용되어 Qt Quick 콘텐츠를 텍스처로 렌더링하기 위해 QQuickWindow 에 대한 화면상의 네이티브 창을 만들지 않고도 렌더링할 수 있습니다.

원하는 대상 또는 크기와 같은 관련 데이터가 변경되면 새로운 QQuickRenderTarget 로 이 함수를 호출합니다. QQuickRenderTarget 인스턴스를 생성하고 이 함수를 호출하는 것은 저렴하지만, 다른 네이티브 객체나 다른 데이터로 target 을 새로 설정하면 시나리오가 다음 프레임을 렌더링하려고 할 때 초기화 단계에 많은 비용이 발생할 수 있다는 점에 유의하세요. 따라서 필요한 경우에만 대상을 변경하세요.

참고: 창은 target 에서 참조된 네이티브 객체에 대한 소유권을 갖지 않습니다.

참고: target 에서 참조된 네이티브 객체가 시나리오 그래프 렌더러에서도 유효한지 확인하는 것은 호출자의 책임입니다. 예를 들어 Vulkan, Metal 및 Direct3D의 경우 이는 텍스처 또는 이미지가 시나리오 그래프에서 내부적으로 사용하는 것과 동일한 그래픽 장치에서 생성된다는 것을 의미합니다. 따라서 이미 존재하는 디바이스나 컨텍스트에서 생성된 텍스처 객체가 관련된 경우 이 함수는 setGraphicsDevice()와 함께 사용되는 경우가 많습니다.

참고: 관련 그래픽 API를 사용하는 경우 애플리케이션은 시나리오 그래프에서 수행하는 이미지 레이아웃 전환에 주의를 기울여야 합니다. 예를 들어, 이 함수를 호출하여 VkImage가 시나리오 그래프와 연결되면 프레임을 렌더링할 때 레이아웃이 VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL 로 전환됩니다.

경고: 이 함수는 렌더링을 수행하는 스레드에서만 호출할 수 있습니다.

이 함수는 Qt 6.0에 도입되었습니다.

renderTarget(), QQuickRenderControl, setGraphicsDevice() 및 setGraphicsApi()도 참조하십시오 .

[static] void QQuickWindow::setSceneGraphBackend(const QString &backend)

Qt Quick 시나리오 backend 을 요청합니다. 백엔드는 기본 제공되거나 동적으로 로드되는 플러그인 형태로 설치될 수 있습니다.

이 함수는 오버로드된 함수입니다.

참고: 함수에 대한 호출은 애플리케이션에서 첫 번째 QQuickWindow 를 구성하기 전에 이루어져야 합니다. 이후에는 변경할 수 없습니다.

백엔드 목록에 대한 자세한 내용은 애플리케이션에서 적응 프로그램 간 전환하기를 참조하세요. backend 가 유효하지 않거나 오류가 발생하면 요청이 무시됩니다.

참고: 이 함수를 호출하는 것은 QT_QUICK_BACKEND 또는 QMLSCENE_DEVICE 환경 변수를 설정하는 것과 동일합니다. 그러나 이 API는 환경 상속을 걱정할 필요가 없으므로 다른 프로세스를 생성하는 애플리케이션에서 사용하는 것이 더 안전합니다.

sceneGraphBackend()도 참조하세요 .

[static] void QQuickWindow::setTextRenderType(QQuickWindow::TextRenderType renderType)

Qt Quick 에서 텍스트형 요소의 기본 렌더링 유형을 renderType 으로 설정합니다.

참고: 렌더링 유형을 설정하면 이후에 생성되는 요소에만 영향을 미치며 기존 요소의 렌더링 유형은 수정되지 않습니다.

textRenderType()도 참조하세요 .

[override virtual protected] void QQuickWindow::showEvent(QShowEvent *)

다시 구현합니다: QWindow::showEvent(QShowEvent *ev).

[since 6.6] QRhiSwapChain *QQuickWindow::swapChain() const

이 창에서 사용하는 QRhiSwapChain (있는 경우)를 반환합니다.

참고: 표준 렌더 루프 중 하나(예: basic 또는 threaded)로 뒷받침되는 화면 창에만 스왑체인이 있습니다. 그렇지 않으면 반환되는 값은 null입니다. 예를 들어, 창이 QQuickRenderControl 와 함께 사용될 때 결과는 항상 null입니다.

이 함수는 Qt 6.6에 도입되었습니다.

[override virtual protected] void QQuickWindow::tabletEvent(QTabletEvent *event)

다시 구현합니다: QWindow::tabletEvent(QTabletEvent *ev).

[static] QQuickWindow::TextRenderType QQuickWindow::textRenderType()

Qt Quick 에 있는 텍스트와 유사한 요소의 렌더링 유형을 반환합니다. 기본값은 QQuickWindow::QtTextRendering 입니다.

setTextRenderType()도 참조하세요 .

[slot] void QQuickWindow::update()

창이 다른 프레임을 렌더링하도록 스케줄링합니다.

QQuickWindow::update()를 호출하면 기본 씬 그래프의 변경 여부에 관계없이 항상 다시 그리기를 트리거한다는 점에서 QQuickItem::update()와 다릅니다.

[override virtual protected] void QQuickWindow::wheelEvent(QWheelEvent *event)

다시 구현합니다: QWindow::wheelEvent(QWheelEvent *ev).

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