Qt Graphs 移行元Qt Charts
Qt Charts とQt Graphs の API および機能には若干の違いがあります。この記事では、Qt Charts とQt Graphs の API の違いについて説明します:
QMLのインポート文
Qt Charts におけるインポート文:
import QtChartsを次のように変更する必要があります:
import QtGraphsQt Graphsに変更する必要があります。
CMake モジュールのインクルード
Qt Charts 内のインクルード記述:
find_package(Qt6 REQUIRED COMPONENTS Charts)
target_link_libraries(mytarget PRIVATE Qt6::Charts)を次のように変更する必要があります:
find_package(Qt6 REQUIRED COMPONENTS Graphs)
target_link_libraries(mytarget PRIVATE Qt6::Graphs)Qt Graphs の場合。
Qmake モジュールのインクルード
Qt Charts 内のインクルード:
QT += chartsを次のように変更する必要があります:
QT += graphsQt Graphs の場合。
xml-ph-0000@deepl.internal 6.8 リリース版に欠けている機能:Qt Graphs
Qt Graphs のバージョン6.8では、以下の機能が欠落しています:
- Qt Graphs ウィジェット
- ローソク足チャート
- 箱ひげ図
- タイトルと凡例
- 対数目盛軸
- 極座標グラフ表示
テーマ API
2D グラフと 3D グラフのテーマ設定は統一されています。テーマ設定については、GraphsTheme を参照してください。
グラフ全体の一般的な配色は、color scheme プロパティによって制御され、系列の色はtheme プロパティによって制御されるようになりました。配色が明示的に設定されていない場合は、デスクトップのテーマ(Light/Dark)に従います。
列挙型
Qt Graphs 2D では、すべての列挙型はスコープ付き列挙型として実装されています。例えば、Qt Charts にあるPieSlice.LabelOutside に対応するQt Graphs 2D の列挙型は、PieSlice.LabelPosition.Outside です。
QML におけるチャートシリーズの移行
このセクションでは、Qt Charts を使用したコードをQt Graphs 2Dへ移行する方法の例を示します。
エリア・シリーズの移行
以下のコードサンプルは、同様のチャートを実装しています:
Qt Charts を使用する場合:
ChartView {
anchors.fill: parent
ValueAxis {
id: valueAxisX
max: 8
}
ValueAxis {
id: valueAxisY
max: 4
}
AreaSeries {
axisX: valueAxisX
axisY: valueAxisY
upperSeries: LineSeries {
XYPoint { x: 0; y: 2 }
XYPoint { x: 1; y: 3.5 }
XYPoint { x: 2; y: 3.8 }
}
lowerSeries: LineSeries {
XYPoint { x: 0.4; y: 1.5 }
XYPoint { x: 1; y: 2.5 }
XYPoint { x: 2.4; y: 3 }
}
}
}Qt Graphs の場合:
GraphsView {
anchors.fill: parent
axisX: ValueAxis {
id: xAxis
max: 8
tickInterval: 2.0
}
axisY: ValueAxis {
id: yAxis
max: 4
tickInterval: 1.0
}
AreaSeries {
upperSeries: LineSeries {
XYPoint { x: 0; y: 2 }
XYPoint { x: 1; y: 3.5 }
XYPoint { x: 2; y: 3.8 }
}
lowerSeries: LineSeries {
XYPoint { x: 0.4; y: 1.5 }
XYPoint { x: 1; y: 2.5 }
XYPoint { x: 2.4; y: 3 }
}
}
}棒グラフシリーズの移行
Qt Charts を使用した場合:
import QtQuick
import QtCharts
ChartView {
BarSeries {
id: mySeries
axisX: BarCategoryAxis { categories: ["2007", "2008", "2009", "2010", "2011", "2012" ] }
BarSet { label: "Bob"; values: [2, 2, 3, 4, 5, 6] }
BarSet { label: "Susan"; values: [5, 1, 2, 4, 1, 7] }
BarSet { label: "James"; values: [3, 5, 8, 13, 5, 8] }
}
}Qt Graphs を使用する場合:
GraphsView {
axisX: BarCategoryAxis { categories: ["2007", "2008", "2009", "2010", "2011", "2012" ] }
BarSeries {
id: mySeries
BarSet { label: "Bob"; values: [2, 2, 3, 4, 5, 6] }
BarSet { label: "Susan"; values: [5, 1, 2, 4, 1, 7] }
BarSet { label: "James"; values: [3, 5, 8, 13, 5, 8] }
}
}「Donut」シリーズの移行
Qt Charts を使用する場合:
import QtQuick
import QtCharts
ChartView {
PieSeries {
id: pieOuter
size: 0.96
holeSize: 0.7
PieSlice { id: slice; label: "Alpha"; value: 19511; color: "#99CA53" }
PieSlice { label: "Epsilon"; value: 11105; color: "#209FDF" }
PieSlice { label: "Psi"; value: 9352; color: "#F6A625" }
}
PieSeries {
id: pieInner
size: 0.7
holeSize: 0.25
PieSlice { label: "Materials"; value: 10334; color: "#B9DB8A" }
PieSlice { label: "Employee"; value: 3066; color: "#DCEDC4" }
PieSlice { label: "Logistics"; value: 6111; color: "#F3F9EB" }
PieSlice { label: "Materials"; value: 7371; color: "#63BCE9" }
PieSlice { label: "Employee"; value: 2443; color: "#A6D9F2" }
PieSlice { label: "Logistics"; value: 1291; color: "#E9F5FC" }
PieSlice { label: "Materials"; value: 4022; color: "#F9C36C" }
PieSlice { label: "Employee"; value: 3998; color: "#FCE1B6" }
PieSlice { label: "Logistics"; value: 1332; color: "#FEF5E7" }
}
Component.onCompleted: {
// Set the common slice properties dynamically for convenience
for (var i = 0; i < pieOuter.count; i++) {
pieOuter.at(i).labelPosition = PieSlice.LabelOutside;
pieOuter.at(i).labelVisible = true;
pieOuter.at(i).borderWidth = 3;
}
for (var i = 0; i < pieInner.count; i++) {
pieInner.at(i).labelPosition = PieSlice.LabelInsideNormal;
pieInner.at(i).labelVisible = true;
pieInner.at(i).borderWidth = 2;
}
}
}Qt Graphs を使用する場合:
GraphsView {
PieSeries {
id: pieOuter
pieSize: 0.96
holeSize: 0.7
PieSlice { id: slice; label: "Alpha"; value: 19511; color: "#99CA53" }
PieSlice { label: "Epsilon"; value: 11105; color: "#209FDF" }
PieSlice { label: "Psi"; value: 9352; color: "#F6A625" }
}
PieSeries {
id: pieInner
pieSize: 0.7
holeSize: 0.25
PieSlice { label: "Materials"; value: 10334; color: "#B9DB8A" }
PieSlice { label: "Employee"; value: 3066; color: "#DCEDC4" }
PieSlice { label: "Logistics"; value: 6111; color: "#F3F9EB" }
PieSlice { label: "Materials"; value: 7371; color: "#63BCE9" }
PieSlice { label: "Employee"; value: 2443; color: "#A6D9F2" }
PieSlice { label: "Logistics"; value: 1291; color: "#E9F5FC" }
PieSlice { label: "Materials"; value: 4022; color: "#F9C36C" }
PieSlice { label: "Employee"; value: 3998; color: "#FCE1B6" }
PieSlice { label: "Logistics"; value: 1332; color: "#FEF5E7" }
}
Component.onCompleted: {
// Set the common slice properties dynamically for convenience
for (var i = 0; i < pieOuter.count; i++) {
pieOuter.at(i).labelPosition = PieSlice.LabelPosition.Outside;
pieOuter.at(i).labelVisible = true;
pieOuter.at(i).borderWidth = 3;
}
for (var i = 0; i < pieInner.count; i++) {
pieInner.at(i).labelPosition = PieSlice.LabelPosition.InsideNormal;
pieInner.at(i).labelVisible = true;
pieInner.at(i).borderWidth = 2;
}
}
}「Line」シリーズの移行
Qt Charts を使用する場合:
ChartView {
LineSeries {
XYPoint { x: 0; y: 0 }
XYPoint { x: 1.1; y: 2.1 }
XYPoint { x: 1.9; y: 3.3 }
XYPoint { x: 2.1; y: 2.1 }
XYPoint { x: 2.9; y: 4.9 }
XYPoint { x: 3.4; y: 3.0 }
XYPoint { x: 4.1; y: 3.3 }
}
}Qt Graphs を使用する場合:
GraphsView {
// Graphs don't calculate a visible range for axes.
// You should define the visible range explicitly.
axisX: ValueAxis {
id: xAxis
max: 4.1
}
axisY: ValueAxis {
id: yAxis
max: 4.9
}
LineSeries {
XYPoint { x: 0; y: 0 }
XYPoint { x: 1.1; y: 2.1 }
XYPoint { x: 1.9; y: 3.3 }
XYPoint { x: 2.1; y: 2.1 }
XYPoint { x: 2.9; y: 4.9 }
XYPoint { x: 3.4; y: 3.0 }
XYPoint { x: 4.1; y: 3.3 }
}
}円グラフシリーズの移行
Qt Charts を使用する場合:
ChartView {
property variant othersSlice: 0
PieSeries {
id: pieSeries
PieSlice { label: "Volkswagen"; value: 13.5 }
PieSlice { label: "Toyota"; value: 10.9 }
PieSlice { label: "Ford"; value: 8.6 }
PieSlice { label: "Skoda"; value: 8.2 }
PieSlice { label: "Volvo"; value: 6.8 }
}
Component.onCompleted: {
othersSlice = pieSeries.append("Others", 52.0);
pieSeries.find("Volkswagen").exploded = true;
}
}Qt Graphs を使用する場合:
GraphsView {
property variant othersSlice: 0
PieSeries {
id: pieSeries
PieSlice { label: "Volkswagen"; value: 13.5 }
PieSlice { label: "Toyota"; value: 10.9 }
PieSlice { label: "Ford"; value: 8.6 }
PieSlice { label: "Skoda"; value: 8.2 }
PieSlice { label: "Volvo"; value: 6.8 }
}
Component.onCompleted: {
othersSlice = pieSeries.append("Others", 52.0);
pieSeries.find("Volkswagen").exploded = true;
}
}『Scatter』シリーズの移行
Qt Charts を使用する場合:
ChartView {
ScatterSeries {
XYPoint { x: 1.5; y: 1.5 }
XYPoint { x: 1.5; y: 1.6 }
XYPoint { x: 1.57; y: 1.55 }
XYPoint { x: 1.8; y: 1.8 }
XYPoint { x: 1.9; y: 1.6 }
XYPoint { x: 2.1; y: 1.3 }
XYPoint { x: 2.5; y: 2.1 }
}
}Qt Graphs を使用した:
GraphsView {
// Graphs don't calculate a visible range for axes.
// You should define the visible range explicitly.
ValueAxis {
id: xyAxis
min: 1.3
max: 2.5
}
axisX: xyAxis
axisY: xyAxis
ScatterSeries {
XYPoint { x: 1.5; y: 1.5 }
XYPoint { x: 1.5; y: 1.6 }
XYPoint { x: 1.57; y: 1.55 }
XYPoint { x: 1.8; y: 1.8 }
XYPoint { x: 1.9; y: 1.6 }
XYPoint { x: 2.1; y: 1.3 }
XYPoint { x: 2.5; y: 2.1 }
}
}スプライン系列の移行
Qt Charts を使用する場合:
ChartView {
SplineSeries {
name: "Spline"
XYPoint { x: 0; y: 0.0 }
XYPoint { x: 1.1; y: 3.2 }
XYPoint { x: 1.9; y: 2.4 }
XYPoint { x: 2.1; y: 2.1 }
XYPoint { x: 2.9; y: 2.6 }
XYPoint { x: 3.4; y: 2.3 }
XYPoint { x: 4.1; y: 3.1 }
}
}Qt Graphs を使用する場合:
GraphsView {
ValueAxis {
id: xyAxis
max: 5
}
axisX: xyAxis
axisY: xyAxis
SplineSeries {
XYPoint { x: 0; y: 0.0 }
XYPoint { x: 1.1; y: 3.2 }
XYPoint { x: 1.9; y: 2.4 }
XYPoint { x: 2.1; y: 2.1 }
XYPoint { x: 2.9; y: 2.6 }
XYPoint { x: 3.4; y: 2.3 }
XYPoint { x: 4.1; y: 3.1 }
}
}© 2026 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.