|
|
#include "mainwindow.h"
|
|
|
#include <qchartglobal.h>
|
|
|
#include <qchartview.h>
|
|
|
#include <QDebug>
|
|
|
|
|
|
QTCOMMERCIALCHART_USE_NAMESPACE
|
|
|
|
|
|
MainWindow::MainWindow(QWidget *parent)
|
|
|
: QMainWindow(parent)
|
|
|
{
|
|
|
resize(400, 300);
|
|
|
setWindowFlags(Qt::FramelessWindowHint);
|
|
|
|
|
|
QChartView *chartView = new QChartView(this);
|
|
|
chartView->setChartTitle("Click to play with points");
|
|
|
chartView->setRenderHint(QPainter::Antialiasing);
|
|
|
setCentralWidget(chartView);
|
|
|
|
|
|
m_scatter = new QScatterSeries();
|
|
|
for(qreal x(0.5); x <= 5.0; x += 0.5) {
|
|
|
for(qreal y(0.5); y <= 5.0; y += 0.5) {
|
|
|
*m_scatter << QPointF(x, y);
|
|
|
}
|
|
|
}
|
|
|
chartView->addSeries(m_scatter);
|
|
|
|
|
|
// Add two more series
|
|
|
m_scatter2 = new QScatterSeries();
|
|
|
chartView->addSeries(m_scatter2);
|
|
|
m_scatter3 = new QScatterSeries();
|
|
|
chartView->addSeries(m_scatter3);
|
|
|
|
|
|
connect(m_scatter, SIGNAL(clicked(QPointF)), this, SLOT(clickPoint(QPointF)));
|
|
|
}
|
|
|
|
|
|
MainWindow::~MainWindow()
|
|
|
{
|
|
|
}
|
|
|
|
|
|
void MainWindow::clickPoint(QPointF coordinate)
|
|
|
{
|
|
|
// Remove the clicked point from the series and add points to the two other series we have
|
|
|
int index = m_scatter->closestPoint(coordinate);
|
|
|
QPointF point = m_scatter->data().at(index);
|
|
|
Q_ASSERT(m_scatter->removeAt(index));
|
|
|
point.rx() += 0.25;
|
|
|
point.ry() += 0.25;
|
|
|
*m_scatter2 << point;
|
|
|
point.ry() -= 0.25;
|
|
|
*m_scatter3 << point;
|
|
|
}
|
|
|
|