Qt DataVisualization からの Qt Graphs への移行

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

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

QML インポート文

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

import QtDataVisualization

の import 文が変更されました:

import QtGraphs

に変更されました。

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)

に変更されました。

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

Qt DataVisualization のインクルード:

QT += datavisualization

が変更されました:

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

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

変更された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 DataVisualization のQAbstract3DGraph::ShadowQualityLow に対応する Qt Graphs の enum はQtGraphs3D::ShadowQuality::Low です。

©2024 The Qt Company Ltd. 本書に含まれるドキュメントの著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。