Qt Graphs 3D 개요
Qt Graphs 모듈은 학술 연구 및 의료와 같이 분석이 까다로운 산업을 위해 빠르게 반응하는 복잡하고 동적인 3D 그래프를 개발할 수 있는 방법을 제공합니다. Qt Graphs 은 3D 막대, 분산형 및 표면 그래프를 제공합니다. 사용자 상호작용과 실시간 3D 그리기 그래프를 결합하면 공간을 효과적으로 사용하는 사용자 인터페이스를 만들 수 있습니다. 3D와 2D 프레젠테이션 간 전환을 통해 데이터 시각화에서 3D의 가치를 제대로 활용할 수 있습니다.
그래프의 모양과 느낌은 미리 정의된 테마를 사용하거나 새로운 테마를 정의하여 사용자 지정할 수 있습니다. 또한 카메라 설정을 지정하여 장면을 사용자 지정할 수 있으며, 미리 정의된 메시 또는 사용자 정의 메시를 사용하여 개별 항목을 사용자 지정할 수 있습니다.
Qt Graphs 는 Qt 항목 모델과 높이 맵에서 데이터를 시각화하는 데 사용할 수 있는 기성 데이터 프록시를 제공합니다. 각 그래프 유형에는 해당 그래프에 적합한 형식의 데이터를 받아들이는 기본 프록시 유형이 있습니다. 자세한 내용은 Qt Graphs 3D로 데이터 처리하기를 참조하세요.
최종 사용자는 그래프 회전, 데이터 확대 및 축소, 항목 선택, 가독성을 높이기 위한 3D 데이터의 2D 조각 보기 등 여러 가지 방법으로 그래프로 표시되는 데이터와 상호 작용할 수 있습니다. 자세한 내용은 Qt Graphs 3D로 데이터와 상호 작용하기를 참조하세요.
그래프 유형
Qt Graphs 모듈은 다음과 같은 3D 그래프 유형을 제공합니다:
Q3DGraphsWidgetItem 클래스는 막대, 분산형, 표면 등 다양한 그래프 유형을 구현하는 자체 하위 클래스인 Q3DBarsWidgetItem, Q3DScatterWidgetItem, Q3DSurfaceWidgetItem 에 대한 위젯 API를 제공합니다. 그래프 유형에 따라 데이터가 표시되는 방식이 결정됩니다.
모든 렌더링은 QQuick3DViewport
을 상속하는 QQuickGraphsItem
에서 이루어지며, 은 다시 QtQuick3D 을 사용하여 View3D 을 제공합니다. Bars3D , Scatter3D, Surface3D 에 대한 자체 서브클래스가 있습니다.
3D 막대 그래프
3D 막대 그래프는 데이터를 카테고리별로 그룹화된 3D 막대로 표시합니다. Q3DGraphsWidgetItem 클래스는 그래프를 만드는 데 사용됩니다. QBar3DSeries 및 QBarDataProxy 클래스는 그래프에 데이터를 설정하고 그리기 모드 및 음영과 같은 그래프의 시각적 속성을 제어하는 데 사용됩니다. QML에서 해당 유형은 Bars3D, Bar3DSeries, BarDataProxy 입니다.
자세한 내용은 How to construct a minimal Q3DBarsWidgetItem graph 및 단순 막대 그래프 예제를 참조하세요.
3D 스캐터 그래프
3D 스캐터 그래프는 데이터를 점의 모음으로 표시합니다. Q3DScatterWidgetItem 클래스는 그래프를 만드는 데 사용됩니다. QScatter3DSeries 및 QScatterDataProxy 클래스는 그래프에 데이터를 설정하고 그래프의 시각적 속성을 제어하는 데 사용됩니다. QML에서 해당 유형은 Scatter3D, Scatter3DSeries, ScatterDataProxy 입니다.
자세한 내용은 How to construct a minimal Q3DScatterWidgetItem graph 및 단순 분산형 그래프 예제를 참조하세요.
3D 서피스 그래프
3D 표면 그래프는 데이터를 3D 표면 플롯으로 표시합니다. Q3DSurfaceWidgetItem 클래스는 그래프를 만드는 데 사용됩니다. QSurface3DSeries 및 QSurfaceDataProxy 클래스는 그래프에 데이터를 설정하고 그래프의 시각적 속성을 제어하는 데 사용됩니다. QML에서 해당 유형은 Surface3D, Surface3DSeries, SurfaceDataProxy 입니다.
자세한 내용은 How to construct a minimal Q3DSurfaceWidgetItem graph, 그래프 갤러리 및 표면 그래프 갤러리 예제를 참조하세요.
데이터 렌더링에 OpenGL ES 사용
Qt Graphs 는 QtQuick3D 을 기반으로 하며, 이는 Qt Graphs 이 렌더링에 대상 플랫폼의 기본 백엔드를 사용한다는 의미입니다. 그러나 OpenGL ES2가 OpenGL ES3 또는 Vulkan과 같이 그 이상을 지원하지 않는 타깃에서 사용되는 경우 다음 기능이 지원되지 않습니다:
- 볼류메트릭 오브젝트는 3D 텍스처를 사용하므로 다음과 같은 기능이 지원되지 않습니다.
- 즉, QtGraphs3D::OptimizationHint::Default 은 작동하지 않으며 QtGraphs3D::OptimizationHint::Legacy 을 대신 사용해야 합니다.
렌더링 모드 선택
QML에서는 GraphsItem3D.RenderingMode 속성을 설정하여 그래프를 창 배경에 직접 렌더링할지 아니면 일반 QML 항목 렌더링 중에 그려지는 화면 밖의 표면에 렌더링할지를 결정할 수 있습니다.
백그라운드 렌더링 모드는 간접 렌더링 모드보다 약간 더 나은 성능을 제공하지만 비표준 QML 동작이 발생한다는 단점이 있습니다. 예를 들어 그래프는 앤티앨리어싱을 지원하지 않습니다. 따라서 렌더링 모드를 변경하는 것은 성능과 품질의 문제입니다.
Qt Quick 데이터 렌더링에 전용 시나리오 그래프를 사용하므로 그래프에 가장 적합한 선택입니다.
3D 축
Qt Graphs 는 다음 축 유형을 지원합니다:
- 값 축
- 카테고리 축
선 또는 그리드를 표시하도록 축을 설정할 수 있습니다. 두 축 유형 모두 QAbstract3DAxis 클래스 또는 Abstract3DAxis QML 유형의 특수화입니다.
값 축의 경우 값의 범위와 세그먼트 및 하위 세그먼트 수를 설정하여 범위를 나눌 수 있습니다. 기본적으로 각 세그먼트 사이에는 레이블이 그려집니다. 기본적으로 각 세그먼트와 각 하위 세그먼트 사이에는 격자선이 그려집니다. 값 축은 QValue3DAxis 클래스 또는 Value3DAxis QML 유형을 사용하여 구현됩니다.
카테고리 축에는 범위와 조정 가능한 범위 폭이 지정되어 있습니다. 축 범위로 정의된 데이터 창 크기에 따라 동일한 크기의 카테고리로 나뉩니다. 레이블이 제공된 경우 기본적으로 카테고리 위치에 레이블이 그려집니다. 기본적으로 카테고리 사이에는 격자선이 그려집니다. 카테고리 축은 QCategory3DAxis 클래스 또는 Category3DAxis QML 유형을 사용하여 구현됩니다.
그래프에 축을 명시적으로 설정하지 않으면 레이블이 없는 임시 기본 축이 만들어집니다. 이러한 기본 축은 축 접근자를 통해 수정할 수 있지만 특정 방향에 대해 축이 명시적으로 설정되면 해당 방향의 기본 축은 파괴됩니다.
모든 그래프 유형은 여러 계열을 동시에 표시하는 기능을 지원합니다. 모든 계열이 동일한 수의 행과 열을 포함할 필요는 없습니다. 행과 열 레이블은 행과 열 축에 대해 명시적으로 정의되지 않는 한 가장 먼저 추가된 계열에서 가져옵니다.
축 포맷터를 사용하여 값 축 그리드 선과 레이블을 사용자 지정할 수 있습니다. QValue3DAxisFormatter 클래스 및 Value3DAxisFormatter QML 유형은 선형 값 3D 축에 대한 서식 지정 규칙을 제공합니다. QLogValue3DAxisFormatter 클래스와 LogValue3DAxisFormatter QML 유형은 로그 값 3D 축에 대한 서식 지정 규칙을 제공합니다.
극좌표 수평축은 polar 속성을 설정하여 서페이스 및 분산형 그래프에 사용할 수 있습니다. 막대에도 설정할 수 있지만 그렇게 하면 경고가 표시되고 무시됩니다.
3D 장면 사용자 지정
Qt Graphs 는 QtQuick3D 위에 구축되었으므로 QtQuick3D 장면을 Qt Graphs 장면에 통합할 수 있습니다. 자세한 내용은 Qt Graphs 와의 통합 Qt Quick 3D 을 참조하세요.
항목 사용자 지정
Qt Graphs 에는 막대 및 분산형 항목에 대한 메시 유형이 미리 정의되어 있습니다. 메쉬 유형에 따라 막대 또는 분산형 항목이 그래프에 표시되는 방식이 결정됩니다. 사용자 지정 지오메트리를 메쉬 파일로 지정할 수도 있습니다. 자세한 내용은 QAbstract3DSeries::userDefinedMesh()를 참조하십시오. 더 많은 다양성을 위해 메쉬 회전에 쿼터니언을 설정할 수 있습니다.
개별 항목을 사용자 지정하는 것 외에도 QCustom3DItem 클래스 또는 Custom3DItem QML 유형을 사용하여 그래프에 사용자 지정 항목을 추가할 수 있습니다. 이 항목에는 사용자 지정 메쉬, 위치, 크기 조정, 회전 및 선택적 텍스처가 있습니다.
QCustom3DVolume 클래스 및 Custom3DVolume QML 유형을 사용하여 그래프에 추가할 볼륨 렌더링 오브젝트를 생성할 수 있습니다. 볼륨 렌더링 오브젝트는 3D 텍스처가 있는 상자입니다. 볼륨에는 볼륨의 각 주축을 따라 하나씩 세 개의 슬라이스 평면이 지원됩니다.
QCustom3DLabel 클래스 및 Custom3DLabel QML 유형은 지정된 텍스트, 글꼴, 위치, 크기 조정 및 회전으로 사용자 지정 레이블을 구현합니다. 활성 테마에 따라 레이블 색상, 테두리 및 배경이 결정됩니다.
사용자 지정 입력 처리
Qt Graphs 는 선택, 회전, 확대/축소와 같은 일반적인 작업에 대한 기본 입력 핸들러를 구현합니다. 기본 입력 핸들러 대신 사용자 지정 입력 핸들러를 구현하려면 필요한 입력 신호를 재정의합니다.
onTapped: { // Disable the default input handler unsetDefaultTapHandler() // Implement own custom event handler console.log("Custom tap event handler") }
© 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.