Q3DSurfaceWidgetItem Class

Q33D서피스위젯아이템 클래스는 3D 서피스 플롯을 렌더링하는 메서드를 제공합니다. 더 보기...

Header: #include <Q3DSurfaceWidgetItem>
CMake: find_package(Qt6 REQUIRED COMPONENTS GraphsWidgets)
target_link_libraries(mytarget PRIVATE Qt6::GraphsWidgets)
qmake: QT += graphswidgets
상속합니다: Q3DGraphsWidgetItem

프로퍼티

공공 기능

Q3DSurfaceWidgetItem(QObject *parent = nullptr)
virtual ~Q3DSurfaceWidgetItem() override
void addAxis(QValue3DAxis *axis)
void addSeries(QSurface3DSeries *series)
QList<QValue3DAxis *> axes() const
QValue3DAxis *axisX() const
QValue3DAxis *axisY() const
QValue3DAxis *axisZ() const
bool flipHorizontalGrid() const
void releaseAxis(QValue3DAxis *axis)
void removeSeries(QSurface3DSeries *series)
QSurface3DSeries *selectedSeries() const
QList<QSurface3DSeries *> seriesList() const
void setAxisX(QValue3DAxis *axis)
void setAxisY(QValue3DAxis *axis)
void setAxisZ(QValue3DAxis *axis)
void setFlipHorizontalGrid(bool flip)

신호

void axisXChanged(QValue3DAxis *axis)
void axisYChanged(QValue3DAxis *axis)
void axisZChanged(QValue3DAxis *axis)
void flipHorizontalGridChanged(bool flip)
void selectedSeriesChanged(QSurface3DSeries *series)

상세 설명

이 클래스를 사용하면 개발자가 3D 표면 플롯을 렌더링하고 장면을 자유롭게 회전하여 볼 수 있습니다. 그리기 모드 및 음영과 같은 표면의 시각적 속성은 QSurface3DSeries 을 통해 제어할 수 있습니다.

사용자가 마우스 왼쪽 버튼으로 클릭했거나(기본 입력 핸들러를 사용 중인 경우) QSurface3DSeries 을 통해 선택한 데이터 포인트에 강조 표시된 볼을 표시하여 선택을 지원하는 Q3DSurfaceWidgetItem이 있습니다. 선택 포인터에는 기본적으로 데이터 포인트의 값과 포인트의 좌표가 표시되는 레이블이 함께 표시됩니다.

축에 표시되는 값 범위와 레이블 형식은 QValue3DAxis 을 통해 제어할 수 있습니다.

그래프를 회전하려면 마우스 오른쪽 버튼을 누른 상태에서 마우스를 움직입니다. 확대/축소는 마우스 휠을 사용하여 수행합니다. 두 작업 모두 기본 입력 핸들러가 사용 중이라고 가정합니다.

Q3DSurfaceWidgetItem에 축을 명시적으로 설정하지 않은 경우 레이블이 없는 임시 기본 축이 생성됩니다. 이러한 기본 축은 축 접근자를 통해 수정할 수 있지만, 방향에 대해 명시적으로 축이 설정되면 해당 방향의 기본 축은 파괴됩니다.

최소한의 Q3DSurfaceWidgetItem 그래프를 구성하는 방법

먼저 Q3DSurfaceWidgetItem을 생성합니다. 이 예제에서는 그래프를 최상위 창으로 실행하고 있으므로 기본적으로 설정되어 있는 Qt::FramelessWindowHint 플래그를 지워야 합니다:

QQuickWidget quickWidget;
Q3DSurfaceWidgetItem surface;
surface.setWidget(&quickWidget);
surface.widget()->setMinimumSize(QSize(256, 256));

이제 Q3DSurfaceWidgetItem은 렌더링할 데이터를 수신할 준비가 되었습니다. 값을 수신할 데이터 요소를 생성합니다:

참고: 새로운 프록시-시리즈 관계에서 데이터는 직렬로 유지됩니다. 따라서 프록시가 데이터를 추가, 삭제 또는 편집할 수 있으려면 먼저 시리즈를 생성하는 것이 전제 조건입니다.

먼저 데이터를 행 요소에 공급한 다음 해당 포인터를 데이터 요소에 추가합니다:

dataRow1 << QSurfaceDataItem(0.0f, 0.1f, 0.5f) << QSurfaceDataItem(1.0f, 0.5f, 0.5f);
dataRow2 << QSurfaceDataItem(0.0f, 1.8f, 1.0f) << QSurfaceDataItem(1.0f, 1.2f, 1.0f);
data << dataRow1 << dataRow2;

새 시리즈를 만들고 여기에 데이터를 설정합니다:

QSurface3DSeries series;
series.dataProxy()->resetArray(data);
surface.addSeries(&series);

마지막으로 표시되도록 설정해야 합니다:

surface.widget()->show();

이 그래프를 만들고 표시하는 데 필요한 전체 코드는 다음과 같습니다:

#include <QtGraphs>
#include <QtGraphsWidgets/q3dsurfacewidgetitem.h>
#include <QtWidgets/qapplication.h>

int main(int argc, char **argv)
{
    QApplication app(argc, argv);

    QQuickWidget quickWidget;
    Q3DSurfaceWidgetItem surface;
    surface.setWidget(&quickWidget);
    surface.widget()->setMinimumSize(QSize(256, 256));
    QSurfaceDataArray data;
    QSurfaceDataRow dataRow1;
    QSurfaceDataRow dataRow2;

    dataRow1 << QSurfaceDataItem(0.0f, 0.1f, 0.5f) << QSurfaceDataItem(1.0f, 0.5f, 0.5f);
    dataRow2 << QSurfaceDataItem(0.0f, 1.8f, 1.0f) << QSurfaceDataItem(1.0f, 1.2f, 1.0f);
    data << dataRow1 << dataRow2;

    QSurface3DSeries series;
    series.dataProxy()->resetArray(data);
    surface.addSeries(&series);
    surface.widget()->show();

    return app.exec();
}

이 몇 줄의 코드가 만들어내는 결과물은 다음과 같습니다:

씬을 회전하고, 확대하고, 표면 점을 선택하여 위치를 볼 수 있지만 이 최소한의 코드 예제에는 다른 상호 작용이 포함되어 있지 않습니다. 서피스 그래프 갤러리와 같이 제공된 예제를 숙지하면 더 많은 것을 배울 수 있습니다.

Q3DBarsWidgetItem, Q3DScatterWidgetItem, Qt Graphs 3D용 C++ 클래스도참조하세요 .

프로퍼티 문서

axisX : QValue3DAxis*

이 속성은 활성 x축을 보유합니다.

axis 을 활성 X 축으로 설정합니다. addAxis ()를 암시적으로 호출하여 축의 소유권을 이 그래프로 이전합니다.

axis 이 null이면 레이블이 없고 자동으로 조정되는 범위가 있는 임시 기본 축이 생성됩니다.

이 임시 축은 다른 축이 같은 방향으로 명시적으로 설정되면 파괴됩니다.

기능에 액세스합니다:

QValue3DAxis *axisX() const
void setAxisX(QValue3DAxis *axis)

알림 신호:

void axisXChanged(QValue3DAxis *axis)

addAxis() 및 releaseAxis()도 참조하세요 .

axisY : QValue3DAxis*

이 속성은 활성 y축을 보유합니다.

axis 을 활성 y 축으로 설정합니다. addAxis ()를 암시적으로 호출하여 축의 소유권을 이 그래프로 이전합니다.

axis 이 null이면 레이블이 없고 자동으로 조정되는 범위가 있는 임시 기본 축이 생성됩니다.

이 임시 축은 다른 축이 같은 방향으로 명시적으로 설정되면 파괴됩니다.

기능에 액세스합니다:

QValue3DAxis *axisY() const
void setAxisY(QValue3DAxis *axis)

알림 신호:

void axisYChanged(QValue3DAxis *axis)

addAxis() 및 releaseAxis()도 참조하세요 .

axisZ : QValue3DAxis*

이 속성은 활성 z축을 보유합니다.

axis 을 활성 z 축으로 설정합니다. addAxis ()를 암시적으로 호출하여 축의 소유권을 이 그래프로 이전합니다.

axis 이 null이면 레이블이 없고 자동으로 조정되는 범위가 있는 임시 기본 축이 생성됩니다.

이 임시 축은 다른 축이 같은 방향으로 명시적으로 설정되면 파괴됩니다.

기능에 액세스합니다:

QValue3DAxis *axisZ() const
void setAxisZ(QValue3DAxis *axis)

알림 신호:

void axisZChanged(QValue3DAxis *axis)

addAxis() 및 releaseAxis()도 참조하세요 .

flipHorizontalGrid : bool

이 속성은 가로축 그리드를 그래프 하단이 아닌 상단에 표시할지 여부를 결정합니다.

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

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

기능에 접근합니다:

bool flipHorizontalGrid() const
void setFlipHorizontalGrid(bool flip)

통지 신호:

void flipHorizontalGridChanged(bool flip)

[read-only] selectedSeries : QSurface3DSeries* const

이 프로퍼티는 선택된 계열 또는 null을 보유합니다.

selectionMode가 MultiSeries 로 설정된 경우, 이 속성은 선택한 점을 소유하는 계열을 보유합니다.

함수에 액세스합니다:

QSurface3DSeries *selectedSeries() const

알림 신호:

void selectedSeriesChanged(QSurface3DSeries *series)

멤버 함수 문서

[explicit] Q3DSurfaceWidgetItem::Q3DSurfaceWidgetItem(QObject *parent = nullptr)

옵션으로 새로운 3D 표면 그래프를 구성합니다 parent.

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

3D 서피스 그래프를 파괴합니다.

void Q3DSurfaceWidgetItem::addAxis(QValue3DAxis *axis)

그래프에 axis 을 추가합니다. 추가축을 통해 추가된 축은 아직 사용되지 않으며, 추가축은 단순히 axis 의 소유권을 그래프에 부여하는 데 사용됩니다. axis 은 null이거나 다른 그래프에 추가되어서는 안 됩니다.

releaseAxis(), setAxisX(), setAxisY() 및 setAxisZ()도 참조하세요 .

void Q3DSurfaceWidgetItem::addSeries(QSurface3DSeries *series)

그래프에 series 을 추가합니다. 그래프에는 여러 계열을 포함할 수 있지만 축은 한 세트만 있습니다. 새로 추가된 시리즈에 선택 항목이 지정되어 있으면 해당 항목이 강조 표시되고 기존 선택 항목은 모두 지워집니다. 추가된 계열은 하나만 활성 선택 항목을 가질 수 있습니다.

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

QList<QValue3DAxis *> Q3DSurfaceWidgetItem::axes() const

추가된 모든 축의 목록을 반환합니다.

addAxis()도 참조하세요 .

void Q3DSurfaceWidgetItem::releaseAxis(QValue3DAxis *axis)

이 그래프에 추가된 경우 axis 의 소유권을 호출자에게 다시 반환합니다. 해제된 axis 을 사용 중인 경우 새 기본 축이 생성되고 활성으로 설정됩니다.

기본 축을 해제했다가 나중에 다시 추가하면 다른 축과 마찬가지로 작동합니다.

addAxis(), setAxisX(), setAxisY() 및 setAxisZ()도 참조하세요 .

void Q3DSurfaceWidgetItem::removeSeries(QSurface3DSeries *series)

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

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

QList<QSurface3DSeries *> Q3DSurfaceWidgetItem::seriesList() const

이 그래프에 추가된 계열 목록을 반환합니다.

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

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