qscatterseries.cpp
206 lines
| 4.6 KiB
| text/x-c
|
CppLexer
Tero Ahola
|
r42 | #include "qscatterseries.h" | ||
#include "qchart.h" | ||||
Tero Ahola
|
r300 | /*! | ||
\class QScatterSeries | ||||
\brief QtCommercial Chart series API for showing scatter series. | ||||
Tero Ahola
|
r42 | |||
Tero Ahola
|
r300 | \mainclass | ||
Example on how to create a chart with scatter series: | ||||
\snippet ../example/scatter/main.cpp 1 | ||||
The example code would result the following: | ||||
\image scatter_example1.jpg | ||||
Tero Ahola
|
r397 | |||
To customize the graphical representation of the series, you can modify pen, brush, shape and | ||||
size of the marker items. For example: | ||||
\snippet ../example/scatter/main.cpp 3 | ||||
Would present your scatter markers as big rectangles with opaque, uglyish green outlines and | ||||
opaque red filling instead of the beatiful markers defined by the chart's theme: | ||||
\image scatter_example_custom.jpg | ||||
Tero Ahola
|
r300 | */ | ||
Tero Ahola
|
r42 | |||
Tero Ahola
|
r261 | /*! | ||
\enum QScatterSeries::MarkerShape | ||||
This enum describes the shape used when rendering marker items. | ||||
\value MarkerShapeDefault | ||||
\value MarkerShapeX | ||||
\value MarkerShapeRectangle | ||||
Tero Ahola
|
r459 | \value MarkerShapeRoundedRectangle | ||
Tero Ahola
|
r261 | \value MarkerShapeTiltedRectangle | ||
\value MarkerShapeTriangle | ||||
\value MarkerShapeCircle | ||||
*/ | ||||
Tero Ahola
|
r260 | /*! | ||
Tero Ahola
|
r300 | \fn QChartSeriesType QScatterSeries::type() const | ||
\brief Returns QChartSeries::SeriesTypeScatter. | ||||
*/ | ||||
Tero Ahola
|
r260 | |||
Tero Ahola
|
r300 | /*! | ||
Tero Ahola
|
r394 | \fn void QScatterSeries::clicked(QPointF coordinate) | ||
User clicked the scatter series. Note that the \a coordinate is the chart coordinate that the | ||||
click occurred on; not necessarily a data point coordinate. To find the corresponding (closest) | ||||
data point you can use closestPoint(). | ||||
Tero Ahola
|
r300 | */ | ||
Tero Ahola
|
r260 | |||
Tero Ahola
|
r300 | QTCOMMERCIALCHART_BEGIN_NAMESPACE | ||
Tero Ahola
|
r261 | /*! | ||
Constructs a series object which is a child of \a parent. | ||||
*/ | ||||
Tero Ahola
|
r158 | QScatterSeries::QScatterSeries(QObject *parent) : | ||
Michal Klocek
|
r470 | QXYSeries(parent), | ||
m_shape(QScatterSeries::MarkerShapeDefault), | ||||
m_size(9.0) | ||||
Tero Ahola
|
r42 | { | ||
} | ||||
Tero Ahola
|
r260 | /*! | ||
Tero Ahola
|
r261 | Destroys the object. Note that adding series to QChart transfers the ownership to the chart. | ||
Tero Ahola
|
r260 | */ | ||
Tero Ahola
|
r158 | QScatterSeries::~QScatterSeries() | ||
Tero Ahola
|
r42 | { | ||
Tero Ahola
|
r48 | } | ||
Tero Ahola
|
r180 | |||
Tero Ahola
|
r260 | |||
Tero Ahola
|
r300 | /*! | ||
Stream operator for adding a data point with \a value to the series. | ||||
Tero Ahola
|
r358 | \sa add() | ||
Tero Ahola
|
r260 | |||
Tero Ahola
|
r300 | For example: | ||
Tero Ahola
|
r397 | \snippet ../example/scatter/main.cpp 2 | ||
Tero Ahola
|
r260 | */ | ||
Michal Klocek
|
r470 | |||
Tero Ahola
|
r158 | |||
Tero Ahola
|
r260 | /*! | ||
Tero Ahola
|
r300 | Stream operator for adding a list of points to the series. | ||
Tero Ahola
|
r358 | \sa add() | ||
Tero Ahola
|
r300 | */ | ||
Michal Klocek
|
r470 | |||
Tero Ahola
|
r300 | |||
/*! | ||||
Replaces the data of the series with the given list of data \a points. | ||||
Tero Ahola
|
r260 | */ | ||
Michal Klocek
|
r470 | |||
Tero Ahola
|
r61 | |||
Tero Ahola
|
r260 | /*! | ||
Tero Ahola
|
r261 | Returns the current list of data points of the series. | ||
Tero Ahola
|
r260 | */ | ||
Tero Ahola
|
r64 | |||
Tero Ahola
|
r394 | /*! | ||
Tero Ahola
|
r395 | Replaces the point at \a index with \a newPoint. Returns true if \a index is a valid position | ||
in the series data, false otherwise. | ||||
Tero Ahola
|
r394 | */ | ||
Michal Klocek
|
r470 | |||
Tero Ahola
|
r395 | |||
/*! | ||||
Remove the data point at \a index. Returns true if a point was removed, false if the point | ||||
at \a index does not exist on the series. | ||||
*/ | ||||
Michal Klocek
|
r470 | |||
Tero Ahola
|
r394 | |||
/*! | ||||
Remove all occurrences of \a point from the series and returns the number of points removed. | ||||
*/ | ||||
Michal Klocek
|
r470 | |||
Tero Ahola
|
r394 | |||
/*! | ||||
Remove all data points from the series. | ||||
*/ | ||||
/*! | ||||
Returns the index of the data point that is closest to \a coordinate. If several data points | ||||
are at the same distance from the \a coordinate, returns the last one. If no points exist, | ||||
returns -1. | ||||
Michal Klocek
|
r470 | |||
Tero Ahola
|
r394 | int QScatterSeries::closestPoint(QPointF coordinate) | ||
{ | ||||
qreal distance(-1); | ||||
int pointIndex(-1); | ||||
for (int i(0); i < d->m_data.count(); i++) { | ||||
QPointF dataPoint = d->m_data.at(i); | ||||
QPointF difference = dataPoint - coordinate; | ||||
if (i == 0 || difference.manhattanLength() <= distance) { | ||||
distance = difference.manhattanLength(); | ||||
pointIndex = i; | ||||
} | ||||
} | ||||
return pointIndex; | ||||
} | ||||
Michal Klocek
|
r470 | */ | ||
Tero Ahola
|
r394 | |||
Tero Ahola
|
r459 | /*! | ||
Returns the pen used for drawing markers. | ||||
*/ | ||||
Michal Klocek
|
r470 | |||
Tero Ahola
|
r459 | |||
Tero Ahola
|
r260 | /*! | ||
Tero Ahola
|
r300 | Overrides the default pen used for drawing a marker item with a user defined \a pen. The | ||
default pen is defined by chart theme setting. | ||||
Tero Ahola
|
r261 | |||
Tero Ahola
|
r358 | \sa setBrush() | ||
Tero Ahola
|
r300 | \sa QChart::setChartTheme() | ||
Tero Ahola
|
r260 | */ | ||
Michal Klocek
|
r470 | |||
Tero Ahola
|
r75 | |||
Tero Ahola
|
r260 | /*! | ||
Tero Ahola
|
r459 | Returns the brush used for drawing markers. | ||
Tero Ahola
|
r260 | */ | ||
Michal Klocek
|
r470 | |||
Tero Ahola
|
r42 | |||
Tero Ahola
|
r261 | /*! | ||
Tero Ahola
|
r300 | Overrides the default brush of the marker items with a user defined \a brush. The default brush | ||
is defined by chart theme setting. | ||||
Tero Ahola
|
r261 | |||
Tero Ahola
|
r358 | \sa setPen() | ||
Tero Ahola
|
r300 | \sa QChart::setChartTheme() | ||
Tero Ahola
|
r261 | */ | ||
Tero Ahola
|
r195 | |||
Tero Ahola
|
r261 | /*! | ||
Tero Ahola
|
r459 | Returns the shape used for drawing markers. | ||
Tero Ahola
|
r261 | */ | ||
Tero Ahola
|
r459 | QScatterSeries::MarkerShape QScatterSeries::shape() const | ||
Tero Ahola
|
r195 | { | ||
Michal Klocek
|
r470 | return (QScatterSeries::MarkerShape) m_shape; | ||
Tero Ahola
|
r195 | } | ||
Tero Ahola
|
r261 | /*! | ||
Tero Ahola
|
r300 | Overrides the default shape of the marker items with a user defined \a shape. The default shape | ||
is defined by chart theme setting. | ||||
Tero Ahola
|
r261 | */ | ||
Tero Ahola
|
r358 | void QScatterSeries::setShape(MarkerShape shape) | ||
Tero Ahola
|
r195 | { | ||
Michal Klocek
|
r470 | m_shape = shape; | ||
emit updated(); | ||||
Tero Ahola
|
r195 | } | ||
Tero Ahola
|
r397 | /*! | ||
Returns the size of the marker items. | ||||
*/ | ||||
Tero Ahola
|
r459 | qreal QScatterSeries::size() const | ||
Tero Ahola
|
r397 | { | ||
Michal Klocek
|
r470 | return m_size; | ||
Tero Ahola
|
r397 | } | ||
/*! | ||||
Set the \a size of the marker items. The default size is 9.0. | ||||
*/ | ||||
void QScatterSeries::setSize(qreal size) | ||||
{ | ||||
Michal Klocek
|
r470 | m_size = size; | ||
emit updated(); | ||||
Tero Ahola
|
r397 | } | ||
Michal Klocek
|
r470 | |||
Tero Ahola
|
r42 | #include "moc_qscatterseries.cpp" | ||
QTCOMMERCIALCHART_END_NAMESPACE | ||||