diff options
author | Tero Ahola <tero.ahola@digia.com> | 2012-06-05 15:06:29 +0300 |
---|---|---|
committer | Tero Ahola <tero.ahola@digia.com> | 2012-06-05 15:12:24 +0300 |
commit | 41224d5421f7fddd68fe4483db42250a1515e8a9 (patch) | |
tree | 81a6c7084cdd65a5a380644d927d46e24f1f8cb0 /examples/scatterinteractions | |
parent | b193865d4793decd4f685b5c859e0aff1666af25 (diff) |
Fixed coordinate bug with QScatterSeries::onClicked
Diffstat (limited to 'examples/scatterinteractions')
-rw-r--r-- | examples/scatterinteractions/chartview.cpp | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/examples/scatterinteractions/chartview.cpp b/examples/scatterinteractions/chartview.cpp index 1867c994..85d7c352 100644 --- a/examples/scatterinteractions/chartview.cpp +++ b/examples/scatterinteractions/chartview.cpp @@ -19,6 +19,8 @@ ****************************************************************************/ #include "chartview.h" +#include <math.h> +#include <QDebug> QTCOMMERCIALCHART_USE_NAMESPACE @@ -55,6 +57,20 @@ ChartView::~ChartView() void ChartView::handleClickedPoint(const QPointF& point) { - m_scatter->remove(point); - m_scatter2->append(point); + QPointF clickedPoint = point; + // Find the closest point from series 1 + QPointF closest(INT64_MAX, INT64_MAX); + qreal distance(INT64_MAX); + foreach(QPointF currentPoint, m_scatter->points()) { + qreal currentDistance = sqrt((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); } |