Qt Graphs Qt DataVisualization에서 마이그레이션

Qt DataVisualization과 Qt Graphs 사이의 API와 기능은 대부분 변경되지 않았습니다. 그러나 Qt DataVisualization에서 Qt Graphs 로 애플리케이션을 마이그레이션할 때 고려해야 할 몇 가지 차이점이 있습니다:

  • QML 임포트 문
  • CMake 모듈 포함
  • qmake 모듈 포함
  • 위젯 애플리케이션 생성
  • OpenGL 백엔드 사용 요구 사항
  • 제거된 클래스
  • 제거된 API
  • 변경된 API

QML 임포트 문

Qt DataVisualization의 임포트 문이 다음과 같이 변경되었습니다:

import QtDataVisualization

가 다음과 같이 변경되었습니다:

import QtGraphs

for Qt Graphs.

CMake 모듈 포함

Qt DataVisualization:

find_package(Qt6 REQUIRED COMPONENTS DataVisualization)
target_link_libraries(mytarget PRIVATE Qt6::DataVisualization)

의 포함이 다음과 같이 변경됩니다:

find_package(Qt6 REQUIRED COMPONENTS Graphs)
target_link_libraries(mytarget PRIVATE Qt6::Graphs)

for Qt Graphs.

Qmake 모듈 포함

Qt DataVisualization:

QT += datavisualization

의 포함이 다음과 같이 변경됩니다:

QT += graphs

for Qt Graphs 로 변경되었습니다.

위젯 응용 프로그램 생성

위젯 응용 프로그램에서 그래프를 만들려면 코드를 다음에서

Q3DBars *barGraph = new Q3DBars();
QWidget *barsWidget = new QWidget();
QWidget *container = QWidget::createWindowContainer(barGraph, barsWidget);

auto *hLayout = new QHBoxLayout(barsWidget);
hLayout->addWidget(container, 1);

에서

QQuickWidget *quickWidget = new QQuickWidget();
Q3DBarsWidgetItem *barGraph = new Q3DBarsWidgetItem();
barGraph->setWidget(quickWidget);

auto *hLayout = new QHBoxLayout(quickWidget);

OpenGL 백엔드 사용 요구 사항

Qt Graphs 3D를 사용하려면 더 이상 OpenGL 백엔드를 강제로 사용할 필요가 없습니다:

// Remove this line
qputenv("QSG_RHI_BACKEND", "opengl");

Qt Graphs 는 렌더링에 Qt Quick 3D 을 사용하므로 실행 중인 플랫폼의 기본 렌더링 백엔드를 지원합니다.

제거된 클래스

  • Q3DCamera
  • Q3DLight
  • Q3DObject
  • Q3DTheme

제거된 API

  • hasContext
  • 그림자 지원
  • reflection
  • 반사도

변경된 API

  • optimizationHint
  • 렌더링 모드
  • 렌더투이미지
  • 컬러 그라디언트 및 컬러 그라디언트 스톱
  • ThemeColor
  • 데이터 API
  • 카메라 API
  • 테마 API
  • Enums

optimizationHint

Legacy 는 이제 QtDataVisualization의 OptimizationDefault 모드입니다. Default 은 인스턴싱을 사용하며, 이를 지원하는 모든 대상에 사용해야 합니다.

렌더링 모드

RenderDirectToBackground_NoClear 는 Qt 6의 QtDataVisualization에서 이미 폐기되었기 때문에 제거되었습니다.

renderToImage

renderToImage 는 이제 QImage 대신 QSharedPointer<QQuickItemGrabResult> 를 반환하고 더 이상 msaaSamples 를 매개변수로 받지 않습니다.

ColorGradient와 ColorGradientStop

ColorGradient 는 이제 GradientColorGradientStop GradientStop 입니다.

ThemeColor

ThemeColor 는 이제 Color 입니다.

데이터 API

더 이상 new 으로 데이터 배열을 만들 필요가 없습니다. 예를 들어, Qt DataVisualization에서 막대 그래프에 대한 데이터를 생성할 때는 다음과 같이 수행했습니다:

// Qt DataVisualization approach.
QBarDataRow *data = new QBarDataRow;
*data << 1.0f << 3.0f << 7.5f << 5.0f << 2.2f;

이제 다음과 같이 작성합니다:

// Qt Graphs approach.
QBarDataRow data;
data << 1.0f << 3.0f << 7.5f << 5.0f << 2.2f;
series->dataProxy()->addRow(data);

카메라 API

Q3DCamera가 제거됨에 따라 필요한 함수가 이동되었습니다. cameraPreset, cameraTargetPosition, cameraXRotation, cameraYRotation, cameraZoomLevel, wrapCameraXRotation, and wrapCameraYRotation 은 이제 GraphsItem3D 의 일부가 되었습니다.

테마 API

Q3DTheme이 제거되고 2D와 3D 그래프 사이의 테마가 통합됨에 따라 필요한 기능 중 일부가 이동되었으며, 나머지는 대체 기능인 GraphsTheme 에서 찾을 수 있습니다. lightColor, ambientLightStrength, lightStrength, and shadowStrength 은 이제 GraphsItem3D 에서 구현됩니다.

windowColor backgroundColor 은 이제 windowColor 이 하던 기능을 수행하며, 새로운 기능 plotAreaBackgroundColor 은 이전에 backgroundColor 이 하던 기능을 대체합니다.

이제 전체 그래프의 일반 색 구성표는 color scheme 프로퍼티로, 계열 색은 theme 프로퍼티로 제어됩니다. 색 구성표를 명시적으로 설정하지 않으면 바탕 화면 테마(밝음/어두움)를 따릅니다.

열거형

Qt Graphs 에서 모든 열거형은 범위가 지정된 열거형으로 구현됩니다(예: Qt DataVisualization의 QAbstract3DGraph::ShadowQualityLow 의 경우 Qt Graphs 의 해당 열거형은 QtGraphs3D::ShadowQuality::Low 입니다).

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