wavechart.cpp
67 lines
| 1.8 KiB
| text/x-c
|
CppLexer
Michal Klocek
|
r875 | /**************************************************************************** | ||
** | ||||
Titta Heikkala
|
r2688 | ** Copyright (C) 2014 Digia Plc | ||
Michal Klocek
|
r875 | ** All rights reserved. | ||
Titta Heikkala
|
r2740 | ** For any questions to Digia, please use contact form at http://qt.io | ||
Michal Klocek
|
r875 | ** | ||
Titta Heikkala
|
r2740 | ** This file is part of the Qt Charts module. | ||
Michal Klocek
|
r875 | ** | ||
Titta Heikkala
|
r2740 | ** Licensees holding valid commercial license for Qt may use this file in | ||
** accordance with the Qt License Agreement provided with the Software | ||||
** or, alternatively, in accordance with the terms contained in a written | ||||
** agreement between you and Digia. | ||||
Michal Klocek
|
r875 | ** | ||
** If you have questions regarding the use of this file, please use | ||||
Titta Heikkala
|
r2740 | ** contact form at http://qt.io | ||
Michal Klocek
|
r875 | ** | ||
****************************************************************************/ | ||||
Michal Klocek
|
r867 | #include "wavechart.h" | ||
#include <cmath> | ||||
Titta Heikkala
|
r2712 | QT_CHARTS_USE_NAMESPACE | ||
Michal Klocek
|
r867 | |||
#define PI 3.14159265358979 | ||||
static const int numPoints =100; | ||||
WaveChart::WaveChart(QChart* chart, QWidget* parent) : | ||||
QChartView(chart, parent), | ||||
m_series(new QLineSeries()), | ||||
m_wave(0), | ||||
m_step(2 * PI / numPoints) | ||||
{ | ||||
QPen blue(Qt::blue); | ||||
blue.setWidth(3); | ||||
m_series->setPen(blue); | ||||
Marek Rosa
|
r1622 | chart->legend()->setVisible(false); | ||
Michal Klocek
|
r867 | QTime now = QTime::currentTime(); | ||
qsrand((uint) now.msec()); | ||||
int fluctuate = 100; | ||||
for (qreal x = 0; x <= 2 * PI; x += m_step) { | ||||
m_series->append(x, fabs(sin(x) * fluctuate)); | ||||
} | ||||
chart->addSeries(m_series); | ||||
Marek Rosa
|
r1622 | chart->createDefaultAxes(); | ||
Michal Klocek
|
r867 | |||
QObject::connect(&m_timer, SIGNAL(timeout()), this, SLOT(update())); | ||||
m_timer.setInterval(5000); | ||||
m_timer.start(); | ||||
} | ||||
void WaveChart::update() | ||||
{ | ||||
int fluctuate; | ||||
Michal Klocek
|
r1057 | const QList<QPointF>& points = m_series->points(); | ||
Michal Klocek
|
r867 | for (qreal i = 0, x = 0; x <= 2 * PI; x += m_step, i++) { | ||
fluctuate = qrand() % 100; | ||||
Michal Klocek
|
r1057 | m_series->replace(x,points[i].y(),x,fabs(sin(x) * fluctuate)); | ||
Michal Klocek
|
r867 | |||
} | ||||
} | ||||