ScatterChart Example▲
Sélectionnez
/**
**************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the Qt Charts module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:GPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 or (at your option) any later version
** approved by the KDE Free Qt Foundation. The licenses are as published by
** the Free Software Foundation and appearing in the file LICENSE.GPL3
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
** $QT_END_LICENSE$
**
***************************************************************************
*/
#include
"chartview.h"
#include <QtCharts/QScatterSeries>
#include <QtCharts/QLegendMarker>
#include <QtGui/QImage>
#include <QtGui/QPainter>
#include <QtCore/QtMath>
ChartView::
ChartView(QWidget *
parent) :
QChartView(new
QChart(), parent)
{
QScatterSeries *
series0 =
new
QScatterSeries();
series0-&
gt;setName("scatter1"
);
series0-&
gt;setMarkerShape(QScatterSeries::
MarkerShapeCircle);
series0-&
gt;setMarkerSize(15.0
);
QScatterSeries *
series1 =
new
QScatterSeries();
series1-&
gt;setName("scatter2"
);
series1-&
gt;setMarkerShape(QScatterSeries::
MarkerShapeRectangle);
series1-&
gt;setMarkerSize(20.0
);
QScatterSeries *
series2 =
new
QScatterSeries();
series2-&
gt;setName("scatter3"
);
series2-&
gt;setMarkerShape(QScatterSeries::
MarkerShapeRectangle);
series2-&
gt;setMarkerSize(30.0
);
series0-&
gt;append(0
, 6
);
series0-&
gt;append(2
, 4
);
series0-&
gt;append(3
, 8
);
series0-&
gt;append(7
, 4
);
series0-&
gt;append(10
, 5
);
*
series1 &
lt;&
lt; QPointF(1
, 1
) &
lt;&
lt; QPointF(3
, 3
) &
lt;&
lt; QPointF(7
, 6
) &
lt;&
lt; QPointF(8
, 3
) &
lt;&
lt; QPointF(10
, 2
);
*
series2 &
lt;&
lt; QPointF(1
, 5
) &
lt;&
lt; QPointF(4
, 6
) &
lt;&
lt; QPointF(6
, 3
) &
lt;&
lt; QPointF(9
, 5
);
QPainterPath starPath;
starPath.moveTo(28
, 15
);
for
(int
i =
1
; i &
lt; 5
; ++
i) {
starPath.lineTo(14
+
14
*
qCos(0.8
*
i *
M_PI),
15
+
14
*
qSin(0.8
*
i *
M_PI));
}
starPath.closeSubpath();
QImage star(30
, 30
, QImage::
Format_ARGB32);
star.fill(Qt::
transparent);
QPainter painter(&
amp;star);
painter.setRenderHint(QPainter::
Antialiasing);
painter.setPen(QRgb(0xf6a625
));
painter.setBrush(painter.pen().color());
painter.drawPath(starPath);
series2-&
gt;setBrush(star);
series2-&
gt;setPen(QColor(Qt::
transparent));
setRenderHint(QPainter::
Antialiasing);
chart()-&
gt;addSeries(series0);
chart()-&
gt;addSeries(series1);
chart()-&
gt;addSeries(series2);
chart()-&
gt;setTitle("Simple scatterchart example"
);
chart()-&
gt;createDefaultAxes();
chart()-&
gt;setDropShadowEnabled(false
);
chart()-&
gt;legend()-&
gt;setMarkerShape(QLegend::
MarkerShapeFromSeries);
}