Q3DBars Class
Q3DBars 클래스는 3D 막대 그래프를 렌더링하는 메서드를 제공합니다. 더 보기...
Header: | #include <Q3DBars> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS DataVisualization) target_link_libraries(mytarget PRIVATE Qt6::DataVisualization) |
qmake: | QT += datavisualization |
이후: | QtDataVisualization 1.0 |
상속합니다: | QAbstract3DGraph |
속성
|
|
공공 기능
Q3DBars(const QSurfaceFormat *format = nullptr, QWindow *parent = nullptr) | |
virtual | ~Q3DBars() |
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(const QSizeF &margin) |
void | setBarSpacing(const 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(const QSizeF &margin) |
void | barSpacingChanged(const 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로 렌더링하고 장면을 자유롭게 회전하여 볼 수 있습니다. 회전은 마우스 오른쪽 버튼을 누른 상태에서 마우스를 움직이면 됩니다. 확대/축소는 마우스 휠로 수행합니다. 선택은 활성화된 경우 마우스 왼쪽 버튼으로 수행합니다. 마우스 휠을 클릭하여 장면을 기본 카메라 보기로 재설정할 수 있습니다. 터치 디바이스에서는 회전은 탭 앤 무브, 선택은 길게 누르기, 확대/축소는 핀치로 수행됩니다.
Q3DBar에 축을 명시적으로 설정하지 않은 경우 레이블이 없는 임시 기본 축이 생성됩니다. 이러한 기본 축은 축 접근기를 통해 수정할 수 있지만 방향에 대해 축이 명시적으로 설정되는 즉시 해당 방향의 기본 축이 파괴됩니다.
Q3DBars는 동시에 표시되는 두 개 이상의 계열을 지원합니다. 모든 시리즈가 동일한 양의 행과 열을 가질 필요는 없습니다. 행과 열 레이블은 행과 열 축에 명시적으로 정의되지 않는 한 처음 추가된 계열에서 가져옵니다.
최소 Q3DBars 그래프를 만드는 방법
먼저 Q3DBars의 인스턴스를 구성합니다. 이 예제에서는 그래프를 최상위 창으로 실행하고 있으므로 기본적으로 설정되어 있는 Qt::FramelessWindowHint
플래그를 지워야 합니다:
Q3DBars bars; bars.setFlags(bars.flags() ^ Qt::FramelessWindowHint);
Q3DBars를 구성한 후 행과 열 축의 범위를 변경하여 데이터 창을 설정할 수 있습니다. 데이터 창은 기본적으로 시리즈의 모든 데이터를 표시하도록 설정되므로 필수는 아닙니다. 데이터 양이 많은 경우 일반적으로 데이터의 일부만 표시하는 것이 좋습니다. 이 예에서는 처음 5개의 행과 열을 표시하도록 데이터 창을 설정해 보겠습니다:
bars.rowAxis()->setRange(0, 4); bars.columnAxis()->setRange(0, 4);
이제 Q3DBars가 렌더링할 데이터를 받을 준비가 되었습니다. 5개의 값으로 구성된 한 행의 시리즈를 만듭니다:
QBar3DSeries *series = new QBar3DSeries; QBarDataRow *data = new QBarDataRow; *data << 1.0f << 3.0f << 7.5f << 5.0f << 2.2f; series->dataProxy()->addRow(data); bars.addSeries(series);
참고: 데이터 창을 5 x 5로 설정했지만 한 행의 데이터만 추가하고 있습니다. 나머지 행은 비워두어도 괜찮습니다.
마지막으로 표시되도록 설정해야 합니다:
bars.show();
이 그래프를 만들고 표시하는 데 필요한 전체 코드는 다음과 같습니다:
#include <QtDataVisualization> int main(int argc, char **argv) { qputenv("QSG_RHI_BACKEND", "opengl"); QGuiApplication app(argc, argv); Q3DBars bars; bars.setFlags(bars.flags() ^ Qt::FramelessWindowHint); bars.rowAxis()->setRange(0, 4); bars.columnAxis()->setRange(0, 4); QBar3DSeries *series = new QBar3DSeries; QBarDataRow *data = new QBarDataRow; *data << 1.0f << 3.0f << 7.5f << 5.0f << 2.2f; series->dataProxy()->addRow(data); bars.addSeries(series); bars.show(); return app.exec(); }
그리고 이 몇 줄의 코드가 만들어내는 결과물은 다음과 같습니다:
장면을 회전하고, 확대하고, 막대를 선택하여 값을 볼 수 있지만 이 최소한의 코드 예제에는 다른 상호 작용이 포함되어 있지 않습니다. 막대 그래프와 같이 제공된 예제를 숙지하면 더 많은 것을 배울 수 있습니다.
Q3DScatter, Q3DSurface, 및 Qt Data Visualization C++ Classes.
속성 문서
[since 6.3]
barSeriesMargin : QSizeF
X 및 Z 차원의 계열 열 사이의 여백입니다. 적절한 값은 [0,1) 범위입니다.
기본적으로 (0.0, 0.0)
로 사전 설정됩니다. 이 속성을 사용하면 서로 다른 계열의 막대를 나란히 표시하되 열 사이에 공백을 둘 수 있습니다.
이 속성은 Qt 6.3에 도입되었습니다.
함수 액세스:
QSizeF | barSeriesMargin() const |
void | setBarSeriesMargin(const QSizeF &margin) |
알림 신호:
void | barSeriesMarginChanged(const QSizeF &margin) |
barSpacing 를참조하십시오 .
barSpacing : QSizeF
X 및 Z 차원의 막대 간격.
기본적으로 (1.0, 1.0)
로 사전 설정되어 있습니다. 간격은 barSpacingRelative 속성의 영향을 받습니다.
기능에 액세스합니다:
QSizeF | barSpacing() const |
void | setBarSpacing(const QSizeF &spacing) |
알림 신호:
void | barSpacingChanged(const 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*
이 속성은 활성 열에 연결된 축을 보유합니다.
함수에 액세스합니다:
QCategory3DAxis * | columnAxis() const |
void | setColumnAxis(QCategory3DAxis *axis) |
알림 신호:
void | columnAxisChanged(QCategory3DAxis *axis) |
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*
이 속성은 그래프의 기본 계열을 보유합니다.
함수에 액세스합니다:
QBar3DSeries * | primarySeries() const |
void | setPrimarySeries(QBar3DSeries *series) |
알림 신호:
void | primarySeriesChanged(QBar3DSeries *series) |
rowAxis : QCategory3DAxis*
이 속성은 활성 행에 연결된 축을 보유합니다.
함수에 액세스합니다:
QCategory3DAxis * | rowAxis() const |
void | setRowAxis(QCategory3DAxis *axis) |
알림 신호:
void | rowAxisChanged(QCategory3DAxis *axis) |
[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]
Q3DBars::Q3DBars(const QSurfaceFormat *format = nullptr, QWindow *parent = nullptr)
옵션으로 parent 창과 표면 format 을 사용하여 새로운 3D 막대 그래프를 구성합니다.
[virtual noexcept]
Q3DBars::~Q3DBars()
3D 막대 그래프를 파괴합니다.
void Q3DBars::addAxis(QAbstract3DAxis *axis)
그래프에 axis 을 추가합니다. 추가축을 통해 추가된 축은 아직 사용되지 않으며, 추가축은 단순히 axis 의 소유권을 그래프에 부여하는 데 사용됩니다. axis 은 null이거나 다른 그래프에 추가되어서는 안 됩니다.
releaseAxis(), setValueAxis(), setRowAxis() 및 setColumnAxis()도 참조하세요 .
void Q3DBars::addSeries(QBar3DSeries *series)
그래프에 series 을 추가합니다. 그래프에는 여러 계열을 포함할 수 있지만 축은 한 세트만 포함할 수 있으므로 시각화된 데이터가 의미가 있으려면 모든 계열의 행과 열이 일치해야 합니다. 그래프에 표시되는 계열이 여러 개인 경우, 축에 라벨이 명시적으로 설정되지 않은 경우 기본 계열만 축의 행 또는 열 라벨을 생성합니다. 새로 추가된 계열에 선택된 막대가 지정되어 있는 경우 해당 막대가 강조 표시되고 기존 선택 항목은 모두 지워집니다. 추가된 시리즈는 하나만 활성 선택 항목을 가질 수 있습니다.
seriesList(), primarySeries, 및 QAbstract3DGraph::hasSeries()도 참조하세요 .
QList<QAbstract3DAxis *> Q3DBars::axes() const
추가된 모든 축의 목록을 반환합니다.
addAxis()도 참조하세요 .
void Q3DBars::insertSeries(int index, QBar3DSeries *series)
시리즈 목록의 index 위치에 series 을 삽입합니다. series 이 이미 목록에 추가된 경우 새 index 으로 이동됩니다.
참고: 시리즈를 이전 색인 뒤에 있는 새로운 index 으로 이동하는 경우 목록에서 새 위치는 해당 시리즈가 여전히 이전 색인에 있는 것처럼 계산되므로 최종 색인은 실제로 1씩 줄어든 index 이 됩니다.
addSeries(), seriesList() 및 QAbstract3DGraph::hasSeries()도 참조하세요 .
void Q3DBars::releaseAxis(QAbstract3DAxis *axis)
이 그래프에 추가된 경우 axis 의 소유권을 호출자에게 다시 반환합니다. 해제된 axis 을 사용 중인 경우 새 기본 축이 생성되고 활성으로 설정됩니다.
기본 축을 해제했다가 나중에 다시 추가하면 다른 축과 마찬가지로 작동합니다.
addAxis(), setValueAxis(), setRowAxis() 및 setColumnAxis()도 참조하세요 .
void Q3DBars::removeSeries(QBar3DSeries *series)
그래프에서 series 을 제거합니다.
QAbstract3DGraph::hasSeries()도 참조하세요 .
QList<QBar3DSeries *> Q3DBars::seriesList() const
이 그래프에 추가된 계열 목록을 반환합니다.
QAbstract3DGraph::hasSeries()도 참조하세요 .
void Q3DBars::setColumnAxis(QCategory3DAxis *axis)
활성 열의 축을 axis 으로 설정합니다. addAxis()을 암시적으로 호출하여 축의 소유권을 이 그래프로 이전합니다.
axis 이 null이면 레이블이 없는 임시 기본 축이 생성됩니다. 이 임시 축은 다른 축이 같은 방향으로 명시적으로 설정되면 파괴됩니다.
참고: 속성 설정자 함수 columnAxis.
columnAxis(), addAxis() 및 releaseAxis()도 참조하세요 .
void Q3DBars::setPrimarySeries(QBar3DSeries *series)
series 을 그래프의 주 계열로 설정합니다. 주 계열은 축에 레이블이 명시적으로 설정되지 않은 경우 행 및 열 축 레이블을 결정합니다.
지정한 계열이 아직 그래프에 추가되지 않은 경우 주 계열로 설정하면 암시적으로 그래프에 추가됩니다.
기본 계열 자체가 그래프에서 제거되면 이 속성은 기본값으로 재설정됩니다.
series 이 null인 경우 이 속성은 기본값으로 재설정됩니다. 기본값은 처음 추가된 계열로, 그래프에 추가된 계열이 없는 경우 0입니다.
참고: 속성에 대한 설정자 함수 primarySeries.
primarySeries()도 참조하세요 .
void Q3DBars::setRowAxis(QCategory3DAxis *axis)
활성 행의 축을 axis 으로 설정합니다. addAxis()을 암시적으로 호출하여 축의 소유권을 이 그래프로 이전합니다.
axis 이 null이면 레이블이 없는 임시 기본 축이 생성됩니다. 이 임시 축은 다른 축이 같은 방향으로 명시적으로 설정되면 파괴됩니다.
참고: 속성 설정자 함수 rowAxis.
rowAxis(), addAxis() 및 releaseAxis()도 참조하세요 .
© 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.