/**************************************************************************** ** ** Copyright (C) 2012 Digia Plc ** All rights reserved. ** For any questions to Digia, please use contact form at http://qt.digia.com ** ** This file is part of the Qt Commercial Charts Add-on. ** ** $QT_BEGIN_LICENSE$ ** Licensees holding valid Qt Commercial licenses may use this file in ** accordance with the Qt Commercial License Agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and Digia. ** ** If you have questions regarding the use of this file, please use ** contact form at http://qt.digia.com ** $QT_END_LICENSE$ ** ****************************************************************************/ #include "chartview.h" #include #include #include #include #include ChartView::ChartView(QChart* chart,QWidget* parent): QChartView(chart,parent), m_index(-1), m_chart(chart) { m_chart->setTitle("Charts presenter"); m_chart->setDropShadowEnabled(false); QObject::connect(&m_timer,SIGNAL(timeout()),this,SLOT(handleTimeout())); m_timer.setInterval(3000); //![1] QLineSeries* series0 = new QLineSeries(); series0->setName("line"); QScatterSeries* series1 = new QScatterSeries(); series1->setName("scatter"); QSplineSeries* series2 = new QSplineSeries(); series2->setName("spline"); QAreaSeries* series3 = new QAreaSeries(series0); series3->setName("area"); //![1] //![2] int numPoints = 10; for (int x = 0; x <= numPoints; ++x) { qreal y = qrand() % 100; series0->append(x,y); series1->append(x,y); series2->append(x,y); } //![2] //![3] m_series<title()+": LineChart"; m_series<title()+": ScatterChart"; m_series<title()+": SplineChart"; m_series<title()+": AreaChart"; //![3] m_timer.start(); handleTimeout(); } ChartView::~ChartView() { if(m_series.size() == 0) return; m_chart->removeSeries(m_series.at(m_index)); m_series.removeLast(); //remove QAreaSeries instance since they will be deleted when QLineSeries instance is gone qDeleteAll(m_series); } //![4] void ChartView::handleTimeout() { if(m_series.size() == 0) return; if(m_index >= 0) m_chart->removeSeries(m_series.at(m_index)); m_index++; m_index = m_index % m_series.size(); m_chart->addSeries(m_series.at(m_index)); m_chart->setTitle(m_titles.at(m_index)); m_chart->createDefaultAxes(); } //![4]