Qt Graphs Qt DataVisualization からの移行

Qt DataVisualization とQt Graphs の API と機能はほとんど変更されていません。しかし、アプリケーションを Qt DataVisualization からQt Graphs に移行する際に考慮しなければならない違いがいくつかあります:

  • QML import ステートメント
  • CMakeモジュールのインクルード
  • qmake モジュールのインクルード
  • ウィジェットアプリケーションの作成
  • OpenGLバックエンドの使用
  • 削除されたクラス
  • 削除されたAPI
  • 変更されたAPI

QML インポート文

Qt DataVisualization.QML の import 文が次のように変更されました:

import QtDataVisualization

のインポート文が変更されました:

import QtGraphs

forQt 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)

forQt Graphs.

Qmake モジュールのインクルード

Qt DataVisualization: のインクルードが次のように変更されました:

QT += datavisualization

のインクルードが変更されました:

QT += graphs

forQt 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 はレンダリングに 3Dを使用しているため、実行するプラットフォームのネイティブ・レンダリング・バックエンドをサポートしています。Qt Quick

削除されたクラス

  • Q3DCamera
  • Q3DLight
  • Q3DObject
  • Q3DTheme

削除されたAPI

  • ハズコンテキスト
  • シャドウサポート
  • リフレクション
  • 反射率

変更されたAPI

  • 最適化ヒント
  • レンダリングモード
  • レンダートゥイメージ
  • ColorGradientおよびColorGradientStop
  • テーマカラー
  • データAPI
  • カメラAPI
  • テーマAPI
  • 列挙型

最適化ヒント

Legacy は QtDataVisualization で だったモードです。 はインスタンス化を使用するので、それをサポートするすべてのターゲットに使用する必要があります。OptimizationDefault Default

レンダリングモード

RenderDirectToBackground_NoClear は削除されました。Qt 6 の QtDataVisualization では既に廃止されていたからです。

renderToImage

renderToImage が の代わりに を返すようになり、 をパラメータとして受け取らなくなりました。QImage QSharedPointer<QQuickItemGrabResult> msaaSamples

ColorGradient と ColorGradientStop

ColorGradient が と になりました。Gradient ColorGradientStop GradientStop

テーマカラー

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 wrapCameraYRotationGraphsItem3D の一部となりました。

テーマAPI

Q3DThemeが削除され、2Dグラフと3Dグラフのテーマが統一されたので、Q3DThemeから必要な関数の一部が移動され、残りは代替のGraphsThemelightColor, 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.