diff options
Diffstat (limited to 'examples/charts/scatterinteractions')
-rw-r--r-- | examples/charts/scatterinteractions/chartview.cpp | 79 | ||||
-rw-r--r-- | examples/charts/scatterinteractions/chartview.h | 46 | ||||
-rw-r--r-- | examples/charts/scatterinteractions/main.cpp | 35 | ||||
-rw-r--r-- | examples/charts/scatterinteractions/scatterinteractions.pro | 9 |
4 files changed, 169 insertions, 0 deletions
diff --git a/examples/charts/scatterinteractions/chartview.cpp b/examples/charts/scatterinteractions/chartview.cpp new file mode 100644 index 00000000..7e55c4e0 --- /dev/null +++ b/examples/charts/scatterinteractions/chartview.cpp @@ -0,0 +1,79 @@ +/**************************************************************************** +** +** Copyright (C) 2014 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 Enterprise Charts Add-on. +** +** $QT_BEGIN_LICENSE$ +** Licensees holding valid Qt Enterprise licenses may use this file in +** accordance with the Qt Enterprise 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 <qmath.h> +#include <QDebug> + +QT_CHARTS_USE_NAMESPACE + +ChartView::ChartView(QWidget *parent) + : QChartView(new QChart(), parent), + m_scatter(0), + m_scatter2(0) +{ + setRenderHint(QPainter::Antialiasing); + + chart()->setTitle("Click to interact with scatter points"); + + m_scatter = new QScatterSeries(); + m_scatter->setName("scatter1"); + for (qreal x(0.5); x <= 4.0; x += 0.5) { + for (qreal y(0.5); y <= 4.0; y += 0.5) { + *m_scatter << QPointF(x, y); + } + } + m_scatter2 = new QScatterSeries(); + m_scatter2->setName("scatter2"); + + chart()->addSeries(m_scatter2); + chart()->addSeries(m_scatter); + chart()->createDefaultAxes(); + chart()->axisX()->setRange(0, 4.5); + chart()->axisY()->setRange(0, 4.5); + + connect(m_scatter, SIGNAL(clicked(QPointF)), this, SLOT(handleClickedPoint(QPointF))); +} + +ChartView::~ChartView() +{ +} + +void ChartView::handleClickedPoint(const QPointF &point) +{ + QPointF clickedPoint = point; + // Find the closest point from series 1 + QPointF closest(INT_MAX, INT_MAX); + qreal distance(INT_MAX); + foreach (QPointF currentPoint, m_scatter->points()) { + qreal currentDistance = qSqrt((currentPoint.x() - clickedPoint.x()) + * (currentPoint.x() - clickedPoint.x()) + + (currentPoint.y() - clickedPoint.y()) + * (currentPoint.y() - clickedPoint.y())); + if (currentDistance < distance) { + distance = currentDistance; + closest = currentPoint; + } + } + + // Remove the closes point from series 1 and append it to series 2 + m_scatter->remove(closest); + m_scatter2->append(closest); +} diff --git a/examples/charts/scatterinteractions/chartview.h b/examples/charts/scatterinteractions/chartview.h new file mode 100644 index 00000000..da280051 --- /dev/null +++ b/examples/charts/scatterinteractions/chartview.h @@ -0,0 +1,46 @@ +/**************************************************************************** +** +** Copyright (C) 2014 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 Enterprise Charts Add-on. +** +** $QT_BEGIN_LICENSE$ +** Licensees holding valid Qt Enterprise licenses may use this file in +** accordance with the Qt Enterprise 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$ +** +****************************************************************************/ + +#ifndef CHARTVIEW_H +#define CHARTVIEW_H + +#include <QChartGlobal> +#include <QChartView> +#include <QScatterSeries> + +QT_CHARTS_USE_NAMESPACE + +class ChartView : public QChartView +{ + Q_OBJECT + +public: + ChartView(QWidget *parent = 0); + ~ChartView(); + +private Q_SLOTS: + void handleClickedPoint(const QPointF &point); + +private: + QScatterSeries *m_scatter; + QScatterSeries *m_scatter2; +}; + +#endif // CHARTVIEW_H diff --git a/examples/charts/scatterinteractions/main.cpp b/examples/charts/scatterinteractions/main.cpp new file mode 100644 index 00000000..fb5dd8fc --- /dev/null +++ b/examples/charts/scatterinteractions/main.cpp @@ -0,0 +1,35 @@ +/**************************************************************************** +** +** Copyright (C) 2014 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 Enterprise Charts Add-on. +** +** $QT_BEGIN_LICENSE$ +** Licensees holding valid Qt Enterprise licenses may use this file in +** accordance with the Qt Enterprise 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 <QApplication> +#include <QMainWindow> +#include "chartview.h" + +int main(int argc, char *argv[]) +{ + QApplication a(argc, argv); + QMainWindow window; + ChartView chartView(&window); + window.setCentralWidget(&chartView); + window.resize(400, 300); + window.show(); + + return a.exec(); +} diff --git a/examples/charts/scatterinteractions/scatterinteractions.pro b/examples/charts/scatterinteractions/scatterinteractions.pro new file mode 100644 index 00000000..596fe020 --- /dev/null +++ b/examples/charts/scatterinteractions/scatterinteractions.pro @@ -0,0 +1,9 @@ +!include( ../examples.pri ) { + error( "Couldn't find the examples.pri file!" ) +} + +TARGET = scatterinteractions +SOURCES += main.cpp \ + chartview.cpp +HEADERS += \ + chartview.h |