이 페이지에서

Q3DScatterWidgetItem Class

Q3DScatterWidgetItem 클래스는 3D 산점도를 렌더링하는 데 필요한 메서드를 제공합니다. 더 보기...

헤더: #include <Q3DScatterWidgetItem>
CMake: find_package(Qt6 REQUIRED COMPONENTS GraphsWidgets)
target_link_libraries(mytarget PRIVATE Qt6::GraphsWidgets)
qmake: QT += graphswidgets
상속: Q3DGraphsWidgetItem

속성

공개 함수

Q3DScatterWidgetItem(QObject *parent = nullptr)
virtual ~Q3DScatterWidgetItem() override
void addAxis(QValue3DAxis *axis)
void addSeries(QScatter3DSeries *series)
QList<QValue3DAxis *> axes() const
QValue3DAxis *axisX() const
QValue3DAxis *axisY() const
QValue3DAxis *axisZ() const
void releaseAxis(QValue3DAxis *axis)
void removeSeries(QScatter3DSeries *series)
QScatter3DSeries *selectedSeries() const
QList<QScatter3DSeries *> seriesList() const

공개 슬롯

void setAxisX(QValue3DAxis *axis)
void setAxisY(QValue3DAxis *axis)
void setAxisZ(QValue3DAxis *axis)

신호

void axisXChanged(QValue3DAxis *axis)
void axisYChanged(QValue3DAxis *axis)
void axisZChanged(QValue3DAxis *axis)
void selectedSeriesChanged(QScatter3DSeries *series)

상세 설명

이 클래스를 사용하면 개발자가 3D 산점도를 렌더링하고, 장면을 자유롭게 회전시키며 볼 수 있습니다. 회전은 마우스 오른쪽 버튼을 누른 상태에서 마우스를 움직여 수행되며, 확대/축소는 마우스 휠을 사용하여 수행됩니다. 이 기능이 활성화된 경우, 마우스 왼쪽 버튼을 사용하여 선택이 이루어집니다. 마우스 휠을 클릭하면 장면을 기본 카메라 보기로 재설정할 수 있습니다. 터치 기기에서는 탭 후 이동으로 회전하고, 탭 후 길게 누르기(tap-and-hold)로 선택하며, 핀치(pinch) 동작으로 확대/축소합니다.

Q3DScatterWidgetItem에 축이 명시적으로 설정되지 않은 경우, 레이블이 없는 임시 기본 축이 생성됩니다. 이러한 기본 축은 축 액세서를 통해 수정할 수 있지만, 특정 방향에 대해 축이 명시적으로 설정되는 즉시 해당 방향의 기본 축은 삭제됩니다.

Q3DScatterWidgetItem은 동시에 여러 시리즈를 표시할 수 있습니다.

Q3DScatterWidgetItem은 투명도를 지원합니다. 이 기능을 사용하면 산점도의 불투명도를 조정하여 부분적으로 비치거나, 완전히 투명하거나, 불투명하게 만들 수 있습니다.

최소 구성의 Q3DScatterWidgetItem 그래프 생성 방법

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

QQuickWidget quickWidget;
Q3DScatterWidgetItem scatter;
scatter.setWidget(&quickWidget);
scatter.widget()->setMinimumSize(QSize(256, 256));

이제 Q3DScatterWidgetItem은 렌더링할 데이터를 수신할 준비가 되었습니다. 3개의 QVector3D 항목으로 구성된 시리즈 하나를 추가합니다:

참고: 새로운 프록시-시리즈관계에서 데이터는 시리즈에 저장됩니다. 따라서 프록시가 데이터를 추가, 삭제 또는 편집할 수 있으려면 먼저 시리즈를 생성해야 합니다.

QScatter3DSeries series;
QScatterDataArray data;
data << QScatterDataItem(0.5f, 0.5f, 0.5f) << QScatterDataItem(-0.3f, -0.5f, -0.4f)
     << QScatterDataItem(0.0f, -0.3f, 0.2f);
series.dataProxy()->addItems(data);
scatter.addSeries(&series);

마지막으로 이 시리즈를 표시하도록 설정해야 합니다:

scatter.widget()->show();

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

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

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

    QQuickWidget quickWidget;
    Q3DScatterWidgetItem scatter;
    scatter.setWidget(&quickWidget);
    scatter.widget()->setMinimumSize(QSize(256, 256));
    QScatter3DSeries series;
    QScatterDataArray data;
    data << QScatterDataItem(0.5f, 0.5f, 0.5f) << QScatterDataItem(-0.3f, -0.5f, -0.4f)
         << QScatterDataItem(0.0f, -0.3f, 0.2f);
    series.dataProxy()->addItems(data);
    scatter.addSeries(&series);
    scatter.widget()->show();

    return app.exec();
}

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

초록색 구가 표시된 3D 산점도

이 장면을 회전하거나 확대할 수 있으며, 항목을 선택하여 위치를 확인할 수 있지만, 이 최소한의 코드 예제에는 그 외의 상호작용 기능은 포함되어 있지 않습니다. ‘Simple Scatter Graph’와 같이 제공된 예제를 살펴보시면 더 자세한 내용을 확인하실 수 있습니다.

Q3DBarsWidgetItem, Q3DSurfaceWidgetItem, 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()도 참조하십시오 .

[read-only] selectedSeries : QScatter3DSeries*

이 속성은 선택된 시계열을 반환하거나 null을 반환합니다.

액세스 함수:

QScatter3DSeries *selectedSeries() const

알림 신호:

void selectedSeriesChanged(QScatter3DSeries *series)

멤버 함수 설명서

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

선택 사항인 ` parent`을 사용하여 새로운 3D 산점도를 생성합니다.

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

3D 산점도를 삭제합니다.

void Q3DScatterWidgetItem::addAxis(QValue3DAxis *axis)

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

releaseAxis(), setAxisX(), setAxisY() 및 setAxisZ()도 참조하십시오 .

void Q3DScatterWidgetItem::addSeries(QScatter3DSeries *series)

그래프에 ‘ series ’를 추가합니다. 그래프에는 여러 시계가 포함될 수 있지만, 축 세트는 하나뿐입니다. 새로 추가된 시계에 선택 항목이 지정된 경우, 해당 시계가 강조 표시되며 기존 선택 항목은 모두 해제됩니다. 추가된 시계 중 하나만 선택 상태로 유지될 수 있습니다.

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

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

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

addAxis()도 참조하십시오 .

void Q3DScatterWidgetItem::releaseAxis(QValue3DAxis *axis)

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

기본 축이 해제되었다가 나중에 다시 추가되면, 다른 축과 마찬가지로 동작합니다.

addAxis(), setAxisX(), setAxisY() 및 setAxisZ()도 참조하십시오 .

void Q3DScatterWidgetItem::removeSeries(QScatter3DSeries *series)

그래프에서 ‘ series ’를 제거합니다.

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

QList<QScatter3DSeries *> Q3DScatterWidgetItem::seriesList() const

이 그래프에 추가된 시리즈 목록을 반환합니다.

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

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