1/****************************************************************************
2**
3** Copyright (C) 2016 The Qt Company Ltd.
4** Contact: https://www.qt.io/licensing/
5**
6** This file is part of the Qt Charts module of the Qt Toolkit.
7**
8** $QT_BEGIN_LICENSE:GPL$
9** Commercial License Usage
10** Licensees holding valid commercial Qt licenses may use this file in
11** accordance with the commercial license agreement provided with the
12** Software or, alternatively, in accordance with the terms contained in
13** a written agreement between you and The Qt Company. For licensing terms
14** and conditions see https://www.qt.io/terms-conditions. For further
15** information use the contact form at https://www.qt.io/contact-us.
16**
17** GNU General Public License Usage
18** Alternatively, this file may be used under the terms of the GNU
19** General Public License version 3 or (at your option) any later version
20** approved by the KDE Free Qt Foundation. The licenses are as published by
21** the Free Software Foundation and appearing in the file LICENSE.GPL3
22** included in the packaging of this file. Please review the following
23** information to ensure the GNU General Public License requirements will
24** be met: https://www.gnu.org/licenses/gpl-3.0.html.
25**
26** $QT_END_LICENSE$
27**
28****************************************************************************/
29
30#include "charts.h"
31#include <QtCharts/QChart>
32#include <QtCharts/QAreaSeries>
33#include <QtCharts/QLineSeries>
34
35class AreaChart: public Chart
36{
37public:
38 QString name() { return QObject::tr(s: "AreaChart"); }
39 QString category() { return QObject::tr(s: "XYSeries"); }
40 QString subCategory() { return QString(); }
41
42 QChart *createChart(const DataTable &table)
43 {
44 QChart *chart = new QChart();
45 chart->setTitle("Area chart");
46
47 // The lower series initialized to zero values
48 QLineSeries *lowerSeries = 0;
49 QString name("Series ");
50 int nameIndex = 0;
51 for (int i(0); i < table.count(); i++) {
52 QLineSeries *upperSeries = new QLineSeries(chart);
53 for (int j(0); j < table[i].count(); j++) {
54 Data data = table[i].at(i: j);
55 if (lowerSeries) {
56 const QList<QPointF>& points = lowerSeries->points();
57 upperSeries->append(point: QPointF(j, points[i].y() + data.first.y()));
58 } else {
59 upperSeries->append(point: QPointF(j, data.first.y()));
60 }
61 }
62 QAreaSeries *area = new QAreaSeries(upperSeries, lowerSeries);
63 area->setName(name + QString::number(nameIndex));
64 nameIndex++;
65 chart->addSeries(series: area);
66 chart->createDefaultAxes();
67 lowerSeries = upperSeries;
68 }
69 return chart;
70 }
71};
72
73DECLARE_CHART(AreaChart)
74
75

source code of qtcharts/tests/manual/chartviewer/charts/xyseries/areachart.cpp