이 페이지에서

고급 컴포넌트 속성 설정

Properties 뷰의 ‘ Advanced ’ 및 ‘ Layer ’ 섹션에서는 ‘ Item ’ 컴포넌트에서 상속받으며 주로 애플리케이션 개발자가 사용하는 컴포넌트의 고급 속성을 관리할 수 있습니다.

‘속성’의 ‘고급’ 탭.

Smooth ’을 선택하여 부드러운 샘플링을 활성화하십시오. 부드러운 샘플링은 선형 보간을 사용하여 수행되는 반면, 비부드러운 샘플링은 가장 가까운 이웃(nearest neighbor) 방식을 사용하여 수행됩니다. 부드러운 샘플링은 성능에 미치는 영향이 미미하므로 기본적으로 활성화되어 있습니다.

앤티앨리어싱은 화면에서 곡선을 더 부드럽게 보이게 하는 데 사용됩니다. ‘ Antialising ’을 선택하여 앤티앨리어싱을 켭니다.

Baseline offset 의 값은 로컬 좌표계에서 컴포넌트의 기준선 위치를 지정합니다. 텍스트 상자( Text ) 컴포넌트의 기준선은 텍스트가 배치되는 가상의 선입니다. 텍스트를 포함하는 컨트롤은 일반적으로 기준선을 해당 텍스트의 기준선으로 설정합니다. 텍스트가 아닌 컴포넌트의 경우, 기본 기준선 오프셋 0이 사용됩니다.

마우스 및 키보드 이벤트 관리

Enabled 를 선택하면 컴포넌트가 마우스 및 키보드 이벤트를 수신할 수 있습니다. 컴포넌트의 자식 요소들은 이 값을 명시적으로 설정하지 않는 한 이 동작을 상속받습니다.

Focus (마우스 및 키보드 이벤트 수신) 확인란을 선택하면 컴포넌트가 마우스 및 키보드 이벤트를 수신하도록 할 수 있으며, Focus on tab (탭 포커스 체인 포함) 확인란을 선택하면 컴포넌트를 탭 포커스 체인에 추가할 수 있습니다. 탭 포커스 체인은 먼저 부모 컴포넌트를 방문한 다음, 정의된 순서대로 자식 컴포넌트를 순차적으로 방문하며 컴포넌트를 탐색합니다. 탭 포커스 체인에 있는 컴포넌트에서 Tab 키를 누르면 키보드 포커스가 체인의 다음 컴포넌트로 이동합니다. 뒤로 Tab 키(일반적으로 Shift+Tab)를 누르면 포커스가 이전 컴포넌트로 이동합니다.

레이어 사용

Qt Quick 는 전용 씬 그래프를 활용하며, 이 씬 그래프는 OpenGL ES, OpenGL, Vulkan, Metal 또는 Direct 3D와 같은 그래픽 API를 통해 순회 및 렌더링됩니다. 기존의 명령형 페인팅 시스템 대신 그래픽스에 씬 그래프를 사용한다는 것은, 렌더링될 씬을 프레임 간에 유지할 수 있으며 렌더링이 시작되기 전에 렌더링할 전체 프리미티브 집합을 미리 알 수 있음을 의미합니다. 이를 통해 상태 변경을 최소화하기 위한 배치 렌더링이나 가려진 프리미티브 제거와 같은 다양한 최적화가 가능해집니다.

예를 들어, UI에 10개의 항목으로 구성된 목록이 있고 각 항목이 배경색, 아이콘, 텍스트를 가지고 있다고 가정해 봅시다. 기존의 그리기 기법을 사용한다면, 이로 인해 30회의 드로우 콜과 비슷한 수준의 상태 변경이 발생하게 됩니다. 반면, 씬 그래프를 사용하면 렌더링할 프리미티브를 재구성하여 모든 배경을 한 번의 호출로 그린 다음, 모든 아이콘을 그리고, 마지막으로 모든 텍스트를 그리도록 할 수 있어, 총 드로우 콜 수를 단 3회로 줄일 수 있습니다. 이와 같은 배치 처리 및 상태 변경 감소는 일부 하드웨어에서 성능을 크게 향상시킬 수 있습니다.

레이어 속성을 설정하려면 컴포넌트가 어떻게 렌더링되는지에 대한 기본적인 이해가 필요합니다. 렌더링에 대한 설명은 Qt Quick Scene Graph Default Renderer에서 확인할 수 있습니다.

레이어 속성.

컴포넌트는 일반적으로 소속된 창에 직접 렌더링됩니다. 하지만 ‘ Layer ’ 섹션에서 ‘ Enabled ’를 선택하면, 해당 컴포넌트와 그 하위 트리 전체를 오프스크린 표면으로 위임할 수 있습니다. 그러면 오프스크린 표면, 즉 텍스처만 창에 그려집니다. 자세한 내용은 Item Layers 를 참조하십시오.

레이어링이 활성화된 경우, ‘ Effect ’ 필드에서 선택한 컴포넌트와 함께 해당 컴포넌트를 텍스처로 직접 사용할 수 있습니다. 일반적으로 이 컴포넌트는 소스 텍스처가 지정된 셰이더 이펙트여야 합니다.

컴포넌트가 레이어의 오프스크린 표면을 이펙트에 올바르게 전달할 수 있도록 하려면, ‘ Sampler name ’ 필드를 텍스처의 ‘source’ 속성으로 설정해야 합니다.

컴포넌트의 레이어가 활성화되면, 씬 그래프는 GPU에 너비 × 높이 × 4에 해당하는 메모리를 할당합니다. 메모리 제약이 있는 환경에서는 큰 레이어를 사용할 때 주의해야 합니다. 또한, 레이어를 사용하는 컴포넌트는 렌더링 중에 배치 처리될 수 없습니다. 즉, 레이어형 컴포넌트가 많은 씬에서는 성능 문제가 발생할 수 있습니다.

기본적으로, 씬그래프 렌더러가 사용 중이고 기본 그래픽 API가 이를 지원하는 경우, 전체 창에 대해 멀티샘플링이 활성화됩니다. Samples 필드의 값을 설정하여 씬의 일부에 대해 멀티샘플링을 요청할 수 있습니다. 이렇게 하면 특정 서브트리에만 멀티샘플링이 적용되므로 성능이 크게 향상될 수 있습니다. 그럼에도 불구하고, 멀티샘플링을 활성화하면 레이어의 크기와 관계없이 하드웨어 및 드라이버에 따라 성능 및 메모리 비용이 발생하므로 잠재적으로 부하가 클 수 있습니다. 멀티샘플 렌더 버퍼 및 프레임버퍼 블릿을 지원하지 않는 경우, 이 값은 아무런 오류 메시지 없이 무시됩니다.

Format 필드의 값은 텍스처의 내부 OpenGL 형식을 지정합니다. OpenGL 구현에 따라 텍스처 메모리를 일부 절약할 수 있습니다. 그러나 RGBAlpha 값은 기본 하드웨어와 드라이버에서 지원되지 않을 수 있으므로 주의해서 사용해야 합니다.

Texture mirroring ’ 필드에서는 생성된 OpenGL 텍스처를 x축 또는 y축을 기준으로 반전시켜 미러링할지 여부를 지정합니다. 사용자 정의 셰이더가 생성된 텍스처에 직접 액세스하는 경우 사용자 정의 미러링이 유용할 수 있습니다. 레이어드 컴포넌트에 효과가 지정되지 않은 경우, 미러링은 컴포넌트의 UI 표현에 아무런 영향을 미치지 않습니다.

' Smooth '가 선택된 경우, 컴포넌트는 크기 조정에 선형 보간을 사용합니다. 다운샘플링에 밉맵을 사용하려면 ' Mipmap'를 선택하십시오. 밉맵핑은 크기가 축소된 컴포넌트의 시각적 품질을 향상시킬 수 있습니다. 단일 ' Image ' 컴포넌트의 밉맵핑을 위해서는 대신 이미지 속성에서' Mipmap '를 선택하십시오.

컴포넌트의 크기와 다른 크기의 텍스처를 사용하려면 ‘ Texture size ’ 필드에 텍스처의 너비와 높이를 지정하십시오.

Wrap mode ’는 텍스처와 관련된 OpenGL 래핑 모드를 정의합니다. 텍스처를 가장자리에 맞춰 잘라내거나(clamp) 수평 및 수직 방향으로 반복(repeat)할 수 있습니다. 일부 OpenGL ES 2 구현체는 2의 거듭제곱이 아닌 텍스처에 대해 ‘ Repeat ’ 래핑 모드를 지원하지 않는다는 점에 유의하십시오.

Qt Quick UI 디자인 방법’, Qt Quick UI 디자인’ 및 Qt Quick UI 디자인항목도 참조하십시오 .

Copyright © The Qt Company Ltd. and other contributors. 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.