Q3DBarsWidgetItem Class

3D 막대 그래프를 렌더링하는 메서드를 제공하는 Q3DBarsWidgetItem 클래스입니다. 더 보기...

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

속성

공공 기능

Q3DBarsWidgetItem(QObject *parent = nullptr)
virtual ~Q3DBarsWidgetItem() override
void addAxis(QAbstract3DAxis *axis)
void addSeries(QBar3DSeries *series)
QList<QAbstract3DAxis *> axes() const
QSizeF barSeriesMargin() const
QSizeF barSpacing() const
float barThickness() const
QCategory3DAxis *columnAxis() const
float floorLevel() const
void insertSeries(int index, QBar3DSeries *series)
bool isBarSpacingRelative() const
bool isMultiSeriesUniform() const
QBar3DSeries *primarySeries() const
void releaseAxis(QAbstract3DAxis *axis)
void removeSeries(QBar3DSeries *series)
QCategory3DAxis *rowAxis() const
QBar3DSeries *selectedSeries() const
QList<QBar3DSeries *> seriesList() const
void setBarSeriesMargin(QSizeF margin)
void setBarSpacing(QSizeF spacing)
void setBarSpacingRelative(bool relative)
void setBarThickness(float thicknessRatio)
void setColumnAxis(QCategory3DAxis *axis)
void setFloorLevel(float level)
void setMultiSeriesUniform(bool uniform)
void setPrimarySeries(QBar3DSeries *series)
void setRowAxis(QCategory3DAxis *axis)
void setValueAxis(QValue3DAxis *axis)
QValue3DAxis *valueAxis() const

신호

void barSeriesMarginChanged(QSizeF margin)
void barSpacingChanged(QSizeF spacing)
void barSpacingRelativeChanged(bool relative)
void barThicknessChanged(float thicknessRatio)
void columnAxisChanged(QCategory3DAxis *axis)
void floorLevelChanged(float level)
void multiSeriesUniformChanged(bool uniform)
void primarySeriesChanged(QBar3DSeries *series)
void rowAxisChanged(QCategory3DAxis *axis)
void selectedSeriesChanged(QBar3DSeries *series)
void valueAxisChanged(QValue3DAxis *axis)

상세 설명

이 클래스를 사용하면 개발자가 3D 막대 그래프를 렌더링하고 장면을 자유롭게 회전하여 볼 수 있습니다. 회전은 마우스 오른쪽 버튼을 누른 상태에서 마우스를 움직이면 되고, 확대/축소는 마우스 휠을 사용하여 수행됩니다. 활성화된 경우 마우스 왼쪽 버튼으로 선택이 수행됩니다. 마우스 휠을 클릭하면 장면을 기본 카메라 보기로 재설정할 수 있습니다. 터치 디바이스의 경우 회전은 탭 앤 무브, 선택은 탭 앤 홀드, 확대/축소는 핀치로 수행됩니다.

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

Q3DBarsWidgetItem은 동시에 두 개 이상의 표시 계열을 지원합니다. 모든 시리즈가 동일한 수의 행과 열을 가질 필요는 없습니다. 행과 열 레이블은 행과 열 축에 대해 명시적으로 정의되지 않는 한 처음 추가된 계열에서 가져옵니다.

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

최소 Q3DBarsWidgetItem 그래프를 구성하는 방법

먼저 Q3DBarsWidgetItem의 인스턴스를 생성합니다:

QQuickWidget quickWidget;
Q3DBarsWidgetItem bars;
bars.setWidget(&quickWidget);
bars.widget()->setMinimumSize(QSize(256, 256));

Q3DBarsWidgetItem을 구성한 후 행과 열 축의 범위를 변경하여 데이터 창을 설정할 수 있습니다. 데이터 창은 기본적으로 시리즈의 모든 데이터를 표시하도록 설정되므로 필수는 아닙니다. 데이터의 양이 많은 경우 일반적으로 데이터의 일부만 표시하는 것이 좋습니다. 예를 들어 처음 5개의 행과 열을 표시하도록 데이터 창을 설정해 보겠습니다:

bars.rowAxis()->setRange(0, 4);
bars.columnAxis()->setRange(0, 4);

이제 Q3DBarsWidgetItem은 렌더링할 데이터를 받을 준비가 되었습니다. 5개의 값으로 구성된 한 행의 시리즈를 만듭니다:

QBar3DSeries series;
QBarDataRow data;
data << QBarDataItem(1.0f) << QBarDataItem(3.0f) << QBarDataItem(7.5f) << QBarDataItem(5.0f)
     << QBarDataItem(2.2f);
series.dataProxy()->addRow(data);
bars.addSeries(&series);

참고: 데이터 창을 5 x 5로 설정했지만 한 행의 데이터만 추가하고 있습니다. 나머지 행은 비워두어도 괜찮습니다.

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

bars.widget()->show();

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

#include <QtGraphs>
#include <QtGraphsWidgets/q3dbarswidgetitem.h>
#include <QtWidgets/qapplication.h>
int main(int argc, char **argv)
{
    QApplication app(argc, argv);

    QQuickWidget quickWidget;
    Q3DBarsWidgetItem bars;
    bars.setWidget(&quickWidget);
    bars.widget()->setMinimumSize(QSize(256, 256));
    bars.rowAxis()->setRange(0, 4);
    bars.columnAxis()->setRange(0, 4);
    QBar3DSeries series;
    QBarDataRow data;
    data << QBarDataItem(1.0f) << QBarDataItem(3.0f) << QBarDataItem(7.5f) << QBarDataItem(5.0f)
         << QBarDataItem(2.2f);
    series.dataProxy()->addRow(data);
    bars.addSeries(&series);
    bars.widget()->show();

    return app.exec();
}

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

장면을 회전하고, 확대하고, 막대를 선택하여 값을 볼 수 있지만 이 최소한의 코드 예제에는 다른 상호 작용이 포함되어 있지 않습니다. 간단한 막대 그래프와 같이 제공된 예제를 숙지하면 더 많은 것을 배울 수 있습니다.

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

프로퍼티 문서

barSeriesMargin : QSizeF

X 및 Z 차원의 계열 열 사이의 여백입니다. 적절한 값은 [0,1) 범위입니다.

기본적으로 (0.0, 0.0) 로 사전 설정됩니다. 이 속성을 사용하면 서로 다른 계열의 막대를 나란히 표시하되 열 사이에 공백을 두고 표시할 수 있습니다.

기능에 액세스합니다:

QSizeF barSeriesMargin() const
void setBarSeriesMargin(QSizeF margin)

알림 신호:

void barSeriesMarginChanged(QSizeF margin)

barSpacing참조하세요 .

barSpacing : QSizeF

X 및 Z 차원의 막대 간격.

기본적으로 (1.0, 1.0) 로 사전 설정되어 있습니다. 간격은 barSpacingRelative 속성의 영향을 받습니다.

기능에 액세스합니다:

QSizeF barSpacing() const
void setBarSpacing(QSizeF spacing)

알림 신호:

void barSpacingChanged(QSizeF spacing)

barSpacingRelative, multiSeriesUniform, barSeriesMargin참조하세요 .

barSpacingRelative : bool

이 속성은 간격이 절대적인지 또는 막대 두께에 상대적인지를 나타냅니다.

true 인 경우 0.0 값은 막대가 좌우로 배치됨을 의미하며, 1.0 는 막대 사이에 막대 한 개 두께만큼의 공간이 남는다는 의미입니다. true 로 사전 설정합니다.

기능에 액세스합니다:

bool isBarSpacingRelative() const
void setBarSpacingRelative(bool relative)

알림 신호:

void barSpacingRelativeChanged(bool relative)

barThickness : float

이 속성은 X와 Z 치수 사이의 막대 두께 비율을 유지합니다.

1.0 값은 막대의 너비가 깊이만큼 넓다는 의미이고, 0.5 값은 막대의 깊이가 너비의 두 배라는 의미입니다. 기본적으로 1.0 로 사전 설정되어 있습니다.

기능에 액세스합니다:

float barThickness() const
void setBarThickness(float thicknessRatio)

알림 신호:

void barThicknessChanged(float thicknessRatio)

columnAxis : QCategory3DAxis*

이 속성은 활성 열에 연결된 축을 보유합니다.

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

axis 이 null인 경우 레이블이 없는 임시 기본 축이 생성됩니다. 이 임시 축은 다른 축이 같은 방향으로 명시적으로 설정되면 파괴됩니다.

함수에 액세스합니다:

QCategory3DAxis *columnAxis() const
void setColumnAxis(QCategory3DAxis *axis)

알림 신호:

void columnAxisChanged(QCategory3DAxis *axis)

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

floorLevel : float

이 속성은 막대 그래프의 바닥 레벨을 Y축 데이터 좌표로 저장합니다.

실제 바닥 레벨은 Y축의 최소값과 최대값에 의해 제한됩니다. 기본값은 0입니다.

기능에 액세스합니다:

float floorLevel() const
void setFloorLevel(float level)

알림 신호:

void floorLevelChanged(float level)

multiSeriesUniform : bool

이 속성은 여러 계열이 표시되는 경우에도 단일 계열 막대에 비율을 설정하여 막대 배율을 조정할지 여부를 지정합니다.

true 로 설정하면 bar spacing 이 X축에만 올바르게 적용됩니다. 기본값은 false 로 설정되어 있습니다.

기능에 액세스합니다:

bool isMultiSeriesUniform() const
void setMultiSeriesUniform(bool uniform)

알림 신호:

void multiSeriesUniformChanged(bool uniform)

primarySeries : QBar3DSeries*

이 속성은 그래프의 기본 계열을 보유합니다.

series 을 그래프의 주 계열로 설정합니다. 주 계열은 축에 레이블이 명시적으로 설정되지 않은 경우 행 및 열 축 레이블을 결정합니다.

지정한 계열이 아직 그래프에 추가되지 않은 경우 주 계열로 설정하면 암시적으로 그래프에 추가됩니다.

기본 계열 자체가 그래프에서 제거되면 이 속성은 기본값으로 재설정됩니다.

series 이 null인 경우 이 속성은 기본값으로 재설정됩니다. 기본값은 처음 추가된 계열이며, 그래프에 추가된 계열이 없는 경우 0입니다.

함수에 액세스합니다:

QBar3DSeries *primarySeries() const
void setPrimarySeries(QBar3DSeries *series)

알림 신호:

void primarySeriesChanged(QBar3DSeries *series)

rowAxis : QCategory3DAxis*

이 속성은 활성 행에 연결된 축을 보유합니다.

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

axis 이 null인 경우 레이블이 없는 임시 기본 축이 생성됩니다. 이 임시 축은 다른 축이 같은 방향으로 명시적으로 설정되면 파괴됩니다.

함수에 액세스합니다:

QCategory3DAxis *rowAxis() const
void setRowAxis(QCategory3DAxis *axis)

알림 신호:

void rowAxisChanged(QCategory3DAxis *axis)

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

[read-only] selectedSeries : QBar3DSeries* const

이 속성은 선택된 시리즈 또는 null 값을 보유합니다.

selectionMode에 SelectionMultiSeries 플래그가 설정되어 있는 경우 이 속성은 선택한 막대를 소유한 시리즈를 보유합니다.

함수에 액세스합니다:

QBar3DSeries *selectedSeries() const

알림 신호:

void selectedSeriesChanged(QBar3DSeries *series)

valueAxis : QValue3DAxis*

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

axis 이 null인 경우 레이블이 없고 자동으로 조정되는 범위가 있는 임시 기본 축이 생성됩니다. 이 임시 축은 다른 축이 같은 방향으로 명시적으로 설정되면 파괴됩니다.

기능에 액세스합니다:

QValue3DAxis *valueAxis() const
void setValueAxis(QValue3DAxis *axis)

알림 신호:

void valueAxisChanged(QValue3DAxis *axis)

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

멤버 함수 문서

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

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

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

3D 막대 그래프를 파괴합니다.

void Q3DBarsWidgetItem::addAxis(QAbstract3DAxis *axis)

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

releaseAxis(), setValueAxis(), setRowAxis() 및 setColumnAxis()도 참조하세요 .

void Q3DBarsWidgetItem::addSeries(QBar3DSeries *series)

그래프에 series 을 추가합니다. 그래프에는 여러 계열을 포함할 수 있지만 축은 한 세트만 포함할 수 있으므로 시각화된 데이터를 의미 있게 만들려면 모든 계열의 행과 열이 일치해야 합니다. 그래프에 표시되는 계열이 여러 개 있는 경우 축에 라벨이 명시적으로 설정되어 있지 않은 경우 기본 계열만 축의 행 또는 열 라벨을 생성합니다. 새로 추가된 계열에 선택된 막대가 지정되어 있는 경우 해당 막대가 강조 표시되고 기존 선택 항목은 모두 지워집니다. 추가된 시리즈는 하나만 활성 선택 항목을 가질 수 있습니다.

seriesList(), primarySeries, 및 Q3DGraphsWidgetItem::hasSeries()도 참조하세요 .

QList<QAbstract3DAxis *> Q3DBarsWidgetItem::axes() const

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

addAxis()도 참조하세요 .

void Q3DBarsWidgetItem::insertSeries(int index, QBar3DSeries *series)

시리즈 목록의 index 위치에 series 을 삽입합니다. series 이 이미 목록에 추가된 경우 새 index 으로 이동됩니다.

참고: 시리즈를 이전 색인 뒤에 있는 새로운 index 으로 이동하는 경우 목록에서 새 위치는 해당 시리즈가 여전히 이전 색인에 있는 것처럼 계산되므로 최종 색인은 실제로 1씩 감소한 index 이 됩니다.

addSeries(), seriesList() 및 Q3DGraphsWidgetItem::hasSeries()도 참조하세요 .

void Q3DBarsWidgetItem::releaseAxis(QAbstract3DAxis *axis)

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

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

addAxis(), setValueAxis(), setRowAxis() 및 setColumnAxis()도 참조하세요 .

void Q3DBarsWidgetItem::removeSeries(QBar3DSeries *series)

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

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

QList<QBar3DSeries *> Q3DBarsWidgetItem::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.