Surface3DNode QML Type

3D 서피스 그래프 노드의 사용법을 설명합니다. 더 보기...

Import Statement: import QtGraphs
Inherits:

GraphsNode

속성

신호

방법

상세 설명

이 유형을 사용하면 개발자가 Qt Quick 를 사용하여 표면 그래프 노드를 3D로 렌더링할 수 있습니다.

이 유형을 사용하려면 Qt Graphs 모듈을 임포트해야 합니다:

import QtGraphs

그런 다음 qml 파일에서 Surface3DNode를 사용할 수 있습니다:

import QtQuick
import QtGraphs

View3D {
    width: 640
    height: 480

    Surface3DNode {
        width: parent.width
        height: parent.height
        Surface3DSeries {
            itemLabelFormat: "Pop density at (@xLabel N, @zLabel E): @yLabel"
            ItemModelSurfaceDataProxy {
                itemModel: dataModel
                // Mapping model roles to surface series rows, columns, and values.
                rowRole: "longitude"
                columnRole: "latitude"
                yPosRole: "pop_density"
            }
        }

        onTapped: {
            // Disable the default input handler
            unsetDefaultTapHandler()
            // Implement own custom event handler
            console.log("Custom tap event handler")
        }
    }
    ListModel {
        id: dataModel
        ListElement{ longitude: "20"; latitude: "10"; pop_density: "4.75"; }
        ListElement{ longitude: "21"; latitude: "10"; pop_density: "3.00"; }
        ListElement{ longitude: "22"; latitude: "10"; pop_density: "1.24"; }
        ListElement{ longitude: "23"; latitude: "10"; pop_density: "2.53"; }
        ListElement{ longitude: "20"; latitude: "11"; pop_density: "2.55"; }
        ListElement{ longitude: "21"; latitude: "11"; pop_density: "2.03"; }
        ListElement{ longitude: "22"; latitude: "11"; pop_density: "3.46"; }
        ListElement{ longitude: "23"; latitude: "11"; pop_density: "5.12"; }
        ListElement{ longitude: "20"; latitude: "12"; pop_density: "1.37"; }
        ListElement{ longitude: "21"; latitude: "12"; pop_density: "2.98"; }
        ListElement{ longitude: "22"; latitude: "12"; pop_density: "3.33"; }
        ListElement{ longitude: "23"; latitude: "12"; pop_density: "3.23"; }
        ListElement{ longitude: "20"; latitude: "13"; pop_density: "4.34"; }
        ListElement{ longitude: "21"; latitude: "13"; pop_density: "3.54"; }
        ListElement{ longitude: "22"; latitude: "13"; pop_density: "1.65"; }
        ListElement{ longitude: "23"; latitude: "13"; pop_density: "2.67"; }
    }
}

Surface3DSeries, ItemModelSurfaceDataProxy, Bars3DNode, Scatter3DNode, 및 Qt Graphs 3D용 C++ 클래스를참조하십시오 .

프로퍼티 문서

aspectRatio : real

수평면에서 가장 긴 축과 y축 사이의 그래프 스케일 비율입니다. 기본값은 2.0 입니다.

참고: Bars3D 에는 영향을 미치지 않습니다.

horizontalAspectRatio참조하세요 .


axisX : Value3DAxis

활성 X축입니다.

축을 지정하지 않으면 레이블이 없고 자동으로 조정되는 범위가 있는 임시 기본 축이 만들어집니다. 이 임시 축은 다른 축이 명시적으로 같은 방향으로 설정되어 있으면 삭제됩니다.


axisY : Value3DAxis

활성 Y축입니다.

축을 지정하지 않으면 레이블이 없고 자동으로 조정되는 범위가 있는 임시 기본 축이 생성됩니다. 이 임시 축은 다른 축이 명시적으로 같은 방향으로 설정되면 삭제됩니다.


axisZ : Value3DAxis

활성 Z축입니다.

축을 지정하지 않으면 레이블이 없고 자동으로 조정되는 범위가 있는 임시 기본 축이 생성됩니다. 이 임시 축은 다른 축이 명시적으로 같은 방향으로 설정되면 삭제됩니다.


customItemList : list<Custom3DItem>

그래프에 추가된 Custom3DItem 항목 목록입니다. 그래프가 추가된 항목의 소유권을 갖습니다.


flipHorizontalGrid : bool

일부 사용 사례에서는 가로축 그리드가 대부분 표면에 가려져 있으므로 가로축 그리드를 그래프 아래쪽이 아닌 위에 표시하는 것이 더 유용할 수 있습니다. 이에 대한 일반적인 사용 사례는 하향식 시점의 직교 투영을 사용하여 2D 스펙트로그램을 표시하는 것입니다.

false 인 경우 가로축 그리드와 레이블이 그래프의 가로 배경에 그려집니다. true 인 경우 가로축 그리드와 레이블이 그래프의 가로 배경과 반대쪽에 그려집니다. 기본값은 false 입니다.


gridLineType : Graphs3D.GridLineType

격자선 유형이 Graphs3D.GridLineType.Shader 또는 Graphs3D.GridLineType.Geometry 인지 여부를 정의합니다.

이 값은 모든 격자선에 영향을 줍니다.

Graphs3D.GridLineType도 참조하세요 .


horizontalAspectRatio : real

X축과 Z축 사이의 그래프 배율 비율입니다. 0.0 값은 축 범위에 따른 자동 배율을 나타냅니다. 기본값은 0.0 입니다.

참고: barThicknessbarSpacing 속성을 통해 가로 평면에서 배율을 처리하는 Bars3DNode 에는 영향을 미치지 않습니다. 극좌표 그래프도 이 속성을 무시합니다.

aspectRatio, polar, Bars3DNode::barThickness, Bars3DNode::barSpacing참조하세요 .


labelMargin : real

이 속성은 축 레이블 배치에 대한 여백을 지정합니다.

음수 값은 레이블을 플롯 영역 안에 배치하고 양수 값은 레이블을 플롯 영역 밖에 배치합니다. 값이 음수이면 레이블 자동 회전이 비활성화됩니다. 기본값은 0.1

QAbstract3DAxis::labelAutoAngle참조하세요 .


locale : locale

다양한 숫자 레이블 서식을 지정하는 데 사용되는 로캘을 설정합니다. 기본값은 "C" 로캘입니다.

Value3DAxis::labelFormat참조 .


margin : real

여백 - 플로팅 가능한 그래프 영역의 가장자리와 그래프 배경의 가장자리 사이에 남은 공간에 사용되는 절대값입니다.

여백 값이 음수인 경우 여백은 자동으로 결정되며 계열의 항목 크기 및 그래프 유형에 따라 달라질 수 있습니다. 그래프 가로 세로 비율이 기본값에서 변경되지 않은 경우 이 값은 Y축 범위의 일부분으로 해석됩니다. 기본값은 -1.0 입니다.

참고: 분산형 그래프의 여백을 자동으로 결정된 여백보다 작게 설정하면 그래프 가장자리에 있는 분산형 항목이 그래프 배경과 겹칠 수 있습니다.

참고: 분산형 및 표면 그래프에서 여백이 축 레이블 크기에 비해 작은 경우 축의 가장자리 레이블 위치가 인접 축의 가장자리 레이블과 겹치지 않도록 조정됩니다.


optimizationHint : Graphs3D.OptimizationHint

렌더링 최적화에 기본 모드 또는 레거시 모드를 사용할지 여부를 지정합니다.

기본 모드는 인스턴스 렌더링을 사용하며 대부분의 시스템에서 최상의 성능으로 전체 기능 세트를 제공합니다. 정적 모드는 그래프 렌더링을 최적화하며 변경되지 않는 대규모 데이터 세트에 이상적입니다. 동적 데이터 변경 및 항목 회전 시 속도가 느려집니다. 선택이 최적화되지 않으므로 대규모 데이터 세트에 정적 모드를 사용하는 것은 바람직하지 않습니다. 레거시 모드는 인스턴스화 없이 그래프의 모든 항목을 개별적으로 렌더링합니다. 기본 모드가 작동하지 않는 경우, 즉 대상 시스템이 인스턴싱을 지원하지 않는 경우에만 사용해야 합니다. 기본값은 Default 입니다.

참고: 일부 환경에서는 모든 항목이 단일 그리기 호출을 사용하여 렌더링되고 그래픽 드라이버마다 호출당 최대 버텍스 수를 다르게 지원하기 때문에 정적 최적화를 사용하는 큰 그래프가 렌더링되지 않을 수 있습니다. 이는 주로 32비트 및 OpenGL ES2 플랫폼에서 발생하는 문제입니다. 이 문제를 해결하려면 버텍스 수가 적은 아이템 메쉬를 선택하거나 포인트 메쉬를 사용하세요.

Abstract3DSeries::meshGraphs3D.OptimizationHint참조하세요 .


polar : bool

true 의 경우 가로축이 극축으로 변경됩니다. X축은 각도 축이 되고 Z축은 방사형 축이 됩니다. 막대 그래프에는 극좌표 모드를 사용할 수 없습니다.

기본값은 false 입니다.

radialLabelOffset참조하세요 .


queriedGraphPosition : vector3d [read-only]

이 읽기 전용 속성에는 Scene3D::graphPositionQuery 을 사용하여 쿼리한 각 축의 최신 그래프 위치 값이 포함됩니다. 값은 [-1, 1] 범위로 정규화됩니다. 쿼리된 위치가 그래프 범위를 벗어난 경우 값은 실제 위치를 반영하지 않고 대신 범위 밖의 정의되지 않은 위치가 됩니다 [-1, 1]. 쿼리가 수행될 때까지 값은 정의되지 않은 상태로 유지됩니다.

특정 화면 위치와 일치하는 하나의 정확한 3D 좌표는 없으므로 일관성을 유지하기 위해 쿼리는 항상 그래프를 둘러싼 보이지 않는 상자의 안쪽 면을 기준으로 수행됩니다.

참고: 막대 그래프는 그래프 바닥 수준에서만 그래프 위치를 쿼리할 수 있으므로 막대 그래프의 경우 y값은 항상 0이며 그래프의 바닥이 포함된 화면 위치에서만 유효한 쿼리를 수행할 수 있습니다.

Scene3D::graphPositionQuery참조하세요 .


radialLabelOffset : real

이 속성은 방사형 극축의 축 레이블에 대한 정규화된 수평 오프셋을 지정합니다. 0.0 값은 레이블이 0각 각축 격자선 옆에 그려져야 함을 나타냅니다. 1.0 값은 레이블이 그래프 배경 가장자리의 일반적인 위치에 그려져야 함을 나타냅니다. 극좌표 속성 값이 false 인 경우 이 속성은 무시됩니다. 기본값은 1.0 입니다.

polar참조하세요 .


selectedElement : Graphs3D.ElementType [read-only]

그래프에서 선택된 요소입니다.

이 속성은 선택한 요소 유형을 쿼리하는 데 사용할 수 있습니다. 이 유형은 그래프에서 새 선택이 이루어지고 selectedElementChanged 신호가 전송될 때까지 유효합니다.

이 신호는 예를 들어 축 처리 예시에서 설명한 것처럼 사용자 지정 입력 처리를 구현하는 데 사용할 수 있습니다.

selectedLabelIndex(), selectedAxis(), selectedCustomItemIndex(), selectedCustomItem(), Bars3DNode::selectedSeries, Scatter3DNode::selectedSeries, Scene3D::selectionQueryPosition, 및 Graphs3D.ElementType참조하세요 .


selectedSeries : Surface3DSeries [read-only]

선택한 시리즈 또는 null입니다. selectionModeMultiSeries 플래그가 설정된 경우, 이 속성은 선택한 점을 소유하는 계열을 보유합니다.


selectionMode : Graphs3D.SelectionMode

그래프에서 활성 선택 모드입니다. graphs3d.selectionflag 열거형 값 중 하나입니다.


seriesList : list<Surface3DSeries> [default]

이 속성은 그래프의 계열을 보유합니다. 기본적으로 이 속성에는 빈 목록이 포함됩니다. 계열을 설정하려면 addSeries() 함수를 사용하거나 그래프의 하위 항목으로 정의합니다.


theme : GraphsTheme

그래프의 활성 테마.

GraphsTheme참조하세요 .


신호 문서

axisXChanged(ValueAxis3D axis)

이 신호는 axisXaxis 로 변경될 때 발생합니다.

참고: 해당 핸들러는 onAxisXChanged 입니다.


axisYChanged(ValueAxis3D axis)

axisYaxis 으로 변경될 때 이 신호가 전송됩니다.

참고: 해당 핸들러는 onAxisYChanged 입니다.


axisZChanged(ValueAxis3D axis)

axisZaxis 으로 변경될 때 이 신호가 전송됩니다.

참고: 해당 핸들러는 onAxisZChanged 입니다.


flipHorizontalGridChanged(bool flip)

flipHorizontalGridflip 으로 변경될 때 이 신호가 전송됩니다.

참고: 해당 핸들러는 onFlipHorizontalGridChanged 입니다.


selectedSeriesChanged(Surface3DSeries series)

selectedSeriesseries 으로 변경될 때 이 신호가 전송됩니다.

참고: 해당 핸들러는 onSelectedSeriesChanged 입니다.


메서드 문서

qsizetype addCustomItem(Custom3DItem item)

그래프에 Custom3DItem item 을 추가합니다. 그래프가 추가된 항목의 소유권을 갖습니다.

추가에 성공하면 추가된 항목의 인덱스를, 널 항목을 추가하려고 하면 -1을, 이미 추가된 항목을 추가하려고 하면 해당 항목의 인덱스를 반환합니다.

removeCustomItems(), removeCustomItem() 및 removeCustomItemAt()도 참조하세요 .


void addSeries(Surface3DSeries series)

그래프에 series 를 추가합니다.

GraphsNode::hasSeries()도 참조하세요 .


void clearSelection()

첨부된 모든 시리즈에서 선택을 지웁니다.


void doPicking(QPoint point)

그래프의 요소에서 point 의 보기 좌표를 사용하여 선택하기를 수행하여 첫 번째 항목을 선택합니다. 기본 입력 처리는 onTapped 이벤트를 수신하면 이 작업을 수행합니다.

selectedElement참조하세요 .


void doRayPicking(QVector3D origin, QVector3D direction)

origin 에서 시작하여 direction 에서 그래프 요소의 첫 번째 항목을 선택하여 피킹을 수행합니다.

selectedElement도 참조 하세요.


bool hasSeries(Abstract3DSeries series)

series 이 이미 그래프에 추가되었는지 여부를 반환합니다.


void releaseCustomItem(Custom3DItem item)

item 의 소유권을 되찾고 그래프에서 item 을 제거합니다.

참고: 동일한 항목이 그래프에 다시 추가되면 텍스처 파일을 다시 설정해야 합니다.

Custom3DItem::textureFile참조하세요 .


void removeCustomItem(Custom3DItem item)

사용자 정의 item 를 제거합니다. 여기에 할당된 리소스를 삭제합니다.


void removeCustomItemAt(vector3d position)

position 에서 모든 사용자 지정 항목을 제거합니다. 해당 항목에 할당된 리소스를 삭제합니다.


void removeCustomItems()

모든 사용자 지정 항목을 제거합니다. 해당 항목에 할당된 리소스를 삭제합니다.


void removeSeries(Surface3DSeries series)

그래프에서 series 을 제거합니다.

GraphsNode::hasSeries()도 참조하십시오 .


Abstract3DAxis selectedAxis()

모든 레이블 유형으로 selectedElementChanged 신호를 수신한 후 선택한 축을 가져오는 데 사용할 수 있습니다. 선택은 다음 selectedElementChanged 신호까지 유효합니다.

선택한 축을 반환하거나 null을 반환합니다.

selectedElement참조하세요 .


Custom3DItem selectedCustomItem()

ElementType.CustomItem 유형으로 selectedElementChanged 신호를 수신한 후 선택한 사용자 지정 항목을 가져오는 데 사용할 수 있습니다. 항목의 소유권은 그래프에 유지됩니다. 선택 항목은 다음 selectedElementChanged 신호까지 유효합니다.

선택한 사용자 지정 항목 또는 null을 반환합니다.

selectedElement도 참조하세요 .


qsizetype selectedCustomItemIndex()

ElementType.CustomItem 타입으로 selectedElementChanged 신호를 수신한 후 선택한 사용자 지정 항목의 인덱스를 쿼리하는 데 사용할 수 있습니다. 선택 항목은 다음 selectedElementChanged 신호까지 유효합니다.

선택한 사용자 지정 항목의 인덱스 또는 -1을 반환합니다.

selectedElement참조하세요 .


int selectedLabelIndex()

모든 레이블 유형으로 selectedElementChanged 신호를 수신한 후 선택한 레이블의 인덱스를 쿼리하는 데 사용할 수 있습니다. 선택은 다음 selectedElementChanged 신호까지 유효합니다.

선택한 레이블의 인덱스 또는 -1을 반환합니다.

selectedElement도 참조하세요 .


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