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 <QtCharts/QBarCategoryAxis>
31#include <QtCharts/QCandlestickSeries>
32#include <QtCharts/QChartView>
33#include <QtCharts/QValueAxis>
34#include <QtCore/QDateTime>
35#include <QtWidgets/QApplication>
36#include <QtWidgets/QMainWindow>
37
38#include "candlestickdatareader.h"
39
40QT_CHARTS_USE_NAMESPACE
41
42int main(int argc, char *argv[])
43{
44 QApplication a(argc, argv);
45
46 //! [1]
47 QCandlestickSeries *acmeSeries = new QCandlestickSeries();
48 acmeSeries->setName("Acme Ltd");
49 acmeSeries->setIncreasingColor(QColor(Qt::green));
50 acmeSeries->setDecreasingColor(QColor(Qt::red));
51 //! [1]
52
53 //! [2]
54 QFile acmeData(":acme");
55 if (!acmeData.open(flags: QIODevice::ReadOnly | QIODevice::Text))
56 return 1;
57
58 QStringList categories;
59
60 CandlestickDataReader dataReader(&acmeData);
61 while (!dataReader.atEnd()) {
62 QCandlestickSet *set = dataReader.readCandlestickSet();
63 if (set) {
64 acmeSeries->append(set);
65 categories << QDateTime::fromMSecsSinceEpoch(msecs: set->timestamp()).toString(format: "dd");
66 }
67 }
68 //! [2]
69
70 //! [3]
71 QChart *chart = new QChart();
72 chart->addSeries(series: acmeSeries);
73 chart->setTitle("Acme Ltd Historical Data (July 2015)");
74 chart->setAnimationOptions(QChart::SeriesAnimations);
75 //! [3]
76
77 //! [4]
78 chart->createDefaultAxes();
79
80 QBarCategoryAxis *axisX = qobject_cast<QBarCategoryAxis *>(object: chart->axes(orientation: Qt::Horizontal).at(i: 0));
81 axisX->setCategories(categories);
82
83 QValueAxis *axisY = qobject_cast<QValueAxis *>(object: chart->axes(orientation: Qt::Vertical).at(i: 0));
84 axisY->setMax(axisY->max() * 1.01);
85 axisY->setMin(axisY->min() * 0.99);
86 //! [4]
87
88 //! [5]
89 chart->legend()->setVisible(true);
90 chart->legend()->setAlignment(Qt::AlignBottom);
91 //! [5]
92
93 //! [6]
94 QChartView *chartView = new QChartView(chart);
95 chartView->setRenderHint(hint: QPainter::Antialiasing);
96 //! [6]
97
98 //! [7]
99 QMainWindow window;
100 window.setCentralWidget(chartView);
101 window.resize(w: 800, h: 600);
102 window.show();
103 //! [7]
104
105 return a.exec();
106}
107

source code of qtcharts/examples/charts/candlestickchart/main.cpp