Main Page · Class Overview · Hierarchy · All Classes · Special Pages
Public Functions | Protected Functions
QCPAbstractPlottable1D< DataType > Class Template Reference

A template base class for plottables with one-dimensional data. More...

Inheritance diagram for QCPAbstractPlottable1D< DataType >:
Inheritance graph

Public Functions

 QCPAbstractPlottable1D (QCPAxis *keyAxis, QCPAxis *valueAxis)
 
virtual int dataCount () const
 
virtual double dataMainKey (int index) const
 
virtual double dataSortKey (int index) const
 
virtual double dataMainValue (int index) const
 
virtual QCPRange dataValueRange (int index) const
 
virtual QPointF dataPixelPosition (int index) const
 
virtual bool sortKeyIsMainKey () const
 
virtual QCPDataSelection selectTestRect (const QRectF &rect, bool onlySelectable) const
 
virtual int findBegin (double sortKey, bool expandedRange=true) const
 
virtual int findEnd (double sortKey, bool expandedRange=true) const
 
virtual double selectTest (const QPointF &pos, bool onlySelectable, QVariant *details=0) const
 
virtual QCPPlottableInterface1Dinterface1D ()
 
 QCPAbstractPlottable1D (QCPAxis *keyAxis, QCPAxis *valueAxis)
 
virtual int dataCount () const
 
virtual double dataMainKey (int index) const
 
virtual double dataSortKey (int index) const
 
virtual double dataMainValue (int index) const
 
virtual QCPRange dataValueRange (int index) const
 
virtual QPointF dataPixelPosition (int index) const
 
virtual bool sortKeyIsMainKey () const
 
virtual QCPDataSelection selectTestRect (const QRectF &rect, bool onlySelectable) const
 
virtual int findBegin (double sortKey, bool expandedRange=true) const
 
virtual int findEnd (double sortKey, bool expandedRange=true) const
 
virtual double selectTest (const QPointF &pos, bool onlySelectable, QVariant *details=0) const
 
virtual QCPPlottableInterface1Dinterface1D ()
 
- Public Functions inherited from QCPAbstractPlottable
 QCPAbstractPlottable (QCPAxis *keyAxis, QCPAxis *valueAxis)
 
QString name () const
 
bool antialiasedFill () const
 
bool antialiasedScatters () const
 
QPen pen () const
 
QBrush brush () const
 
QCPAxiskeyAxis () const
 
QCPAxisvalueAxis () const
 
QCP::SelectionType selectable () const
 
bool selected () const
 
QCPDataSelection selection () const
 
QCPSelectionDecoratorselectionDecorator () const
 
void setName (const QString &name)
 
void setAntialiasedFill (bool enabled)
 
void setAntialiasedScatters (bool enabled)
 
void setPen (const QPen &pen)
 
void setBrush (const QBrush &brush)
 
void setKeyAxis (QCPAxis *axis)
 
void setValueAxis (QCPAxis *axis)
 
Q_SLOT void setSelectable (QCP::SelectionType selectable)
 
Q_SLOT void setSelection (QCPDataSelection selection)
 
void setSelectionDecorator (QCPSelectionDecorator *decorator)
 
virtual QCPRange getKeyRange (bool &foundRange, QCP::SignDomain inSignDomain=QCP::sdBoth) const =0
 
virtual QCPRange getValueRange (bool &foundRange, QCP::SignDomain inSignDomain=QCP::sdBoth, const QCPRange &inKeyRange=QCPRange()) const =0
 
void coordsToPixels (double key, double value, double &x, double &y) const
 
const QPointF coordsToPixels (double key, double value) const
 
void pixelsToCoords (double x, double y, double &key, double &value) const
 
void pixelsToCoords (const QPointF &pixelPos, double &key, double &value) const
 
void rescaleAxes (bool onlyEnlarge=false) const
 
void rescaleKeyAxis (bool onlyEnlarge=false) const
 
void rescaleValueAxis (bool onlyEnlarge=false, bool inKeyRange=false) const
 
bool addToLegend (QCPLegend *legend)
 
bool addToLegend ()
 
bool removeFromLegend (QCPLegend *legend) const
 
bool removeFromLegend () const
 
 QCPAbstractPlottable (QCPAxis *keyAxis, QCPAxis *valueAxis)
 
QString name () const
 
bool antialiasedFill () const
 
bool antialiasedScatters () const
 
QPen pen () const
 
QBrush brush () const
 
QCPAxiskeyAxis () const
 
QCPAxisvalueAxis () const
 
QCP::SelectionType selectable () const
 
bool selected () const
 
QCPDataSelection selection () const
 
QCPSelectionDecoratorselectionDecorator () const
 
void setName (const QString &name)
 
void setAntialiasedFill (bool enabled)
 
void setAntialiasedScatters (bool enabled)
 
void setPen (const QPen &pen)
 
void setBrush (const QBrush &brush)
 
void setKeyAxis (QCPAxis *axis)
 
void setValueAxis (QCPAxis *axis)
 
Q_SLOT void setSelectable (QCP::SelectionType selectable)
 
Q_SLOT void setSelection (QCPDataSelection selection)
 
void setSelectionDecorator (QCPSelectionDecorator *decorator)
 
virtual QCPRange getKeyRange (bool &foundRange, QCP::SignDomain inSignDomain=QCP::sdBoth) const =0
 
virtual QCPRange getValueRange (bool &foundRange, QCP::SignDomain inSignDomain=QCP::sdBoth, const QCPRange &inKeyRange=QCPRange()) const =0
 
void coordsToPixels (double key, double value, double &x, double &y) const
 
const QPointF coordsToPixels (double key, double value) const
 
void pixelsToCoords (double x, double y, double &key, double &value) const
 
void pixelsToCoords (const QPointF &pixelPos, double &key, double &value) const
 
void rescaleAxes (bool onlyEnlarge=false) const
 
void rescaleKeyAxis (bool onlyEnlarge=false) const
 
void rescaleValueAxis (bool onlyEnlarge=false, bool inKeyRange=false) const
 
bool addToLegend (QCPLegend *legend)
 
bool addToLegend ()
 
bool removeFromLegend (QCPLegend *legend) const
 
bool removeFromLegend () const
 
- Public Functions inherited from QCPLayerable
 QCPLayerable (QCustomPlot *plot, QString targetLayer=QString(), QCPLayerable *parentLayerable=0)
 
bool visible () const
 
QCustomPlotparentPlot () const
 
QCPLayerableparentLayerable () const
 
QCPLayerlayer () const
 
bool antialiased () const
 
void setVisible (bool on)
 
Q_SLOT bool setLayer (QCPLayer *layer)
 
bool setLayer (const QString &layerName)
 
void setAntialiased (bool enabled)
 
bool realVisibility () const
 
 QCPLayerable (QCustomPlot *plot, QString targetLayer=QString(), QCPLayerable *parentLayerable=0)
 
bool visible () const
 
QCustomPlotparentPlot () const
 
QCPLayerableparentLayerable () const
 
QCPLayerlayer () const
 
bool antialiased () const
 
void setVisible (bool on)
 
Q_SLOT bool setLayer (QCPLayer *layer)
 
bool setLayer (const QString &layerName)
 
void setAntialiased (bool enabled)
 
bool realVisibility () const
 

Protected Functions

void getDataSegments (QList< QCPDataRange > &selectedSegments, QList< QCPDataRange > &unselectedSegments) const
 
void drawPolyline (QCPPainter *painter, const QVector< QPointF > &lineData) const
 
void getDataSegments (QList< QCPDataRange > &selectedSegments, QList< QCPDataRange > &unselectedSegments) const
 
void drawPolyline (QCPPainter *painter, const QVector< QPointF > &lineData) const
 
- Protected Functions inherited from QCPAbstractPlottable
virtual QRect clipRect () const
 
virtual void draw (QCPPainter *painter)=0
 
virtual QCP::Interaction selectionCategory () const
 
void applyDefaultAntialiasingHint (QCPPainter *painter) const
 
virtual void selectEvent (QMouseEvent *event, bool additive, const QVariant &details, bool *selectionStateChanged)
 
virtual void deselectEvent (bool *selectionStateChanged)
 
virtual void drawLegendIcon (QCPPainter *painter, const QRectF &rect) const =0
 
void applyFillAntialiasingHint (QCPPainter *painter) const
 
void applyScattersAntialiasingHint (QCPPainter *painter) const
 
virtual QRect clipRect () const
 
virtual void draw (QCPPainter *painter)=0
 
virtual QCP::Interaction selectionCategory () const
 
void applyDefaultAntialiasingHint (QCPPainter *painter) const
 
virtual void selectEvent (QMouseEvent *event, bool additive, const QVariant &details, bool *selectionStateChanged)
 
virtual void deselectEvent (bool *selectionStateChanged)
 
virtual void drawLegendIcon (QCPPainter *painter, const QRectF &rect) const =0
 
void applyFillAntialiasingHint (QCPPainter *painter) const
 
void applyScattersAntialiasingHint (QCPPainter *painter) const
 
- Protected Functions inherited from QCPLayerable
virtual void parentPlotInitialized (QCustomPlot *parentPlot)
 
virtual void mousePressEvent (QMouseEvent *event, const QVariant &details)
 
virtual void mouseMoveEvent (QMouseEvent *event, const QPointF &startPos)
 
virtual void mouseReleaseEvent (QMouseEvent *event, const QPointF &startPos)
 
virtual void mouseDoubleClickEvent (QMouseEvent *event, const QVariant &details)
 
virtual void wheelEvent (QWheelEvent *event)
 
void initializeParentPlot (QCustomPlot *parentPlot)
 
void setParentLayerable (QCPLayerable *parentLayerable)
 
bool moveToLayer (QCPLayer *layer, bool prepend)
 
void applyAntialiasingHint (QCPPainter *painter, bool localAntialiased, QCP::AntialiasedElement overrideElement) const
 
virtual void parentPlotInitialized (QCustomPlot *parentPlot)
 
virtual void mousePressEvent (QMouseEvent *event, const QVariant &details)
 
virtual void mouseMoveEvent (QMouseEvent *event, const QPointF &startPos)
 
virtual void mouseReleaseEvent (QMouseEvent *event, const QPointF &startPos)
 
virtual void mouseDoubleClickEvent (QMouseEvent *event, const QVariant &details)
 
virtual void wheelEvent (QWheelEvent *event)
 
void initializeParentPlot (QCustomPlot *parentPlot)
 
void setParentLayerable (QCPLayerable *parentLayerable)
 
bool moveToLayer (QCPLayer *layer, bool prepend)
 
void applyAntialiasingHint (QCPPainter *painter, bool localAntialiased, QCP::AntialiasedElement overrideElement) const
 

Additional Inherited Members

- Signals inherited from QCPAbstractPlottable
void selectionChanged (bool selected)
 
void selectionChanged (const QCPDataSelection &selection)
 
void selectableChanged (QCP::SelectionType selectable)
 
void selectionChanged (bool selected)
 
void selectionChanged (const QCPDataSelection &selection)
 
void selectableChanged (QCP::SelectionType selectable)
 
- Signals inherited from QCPLayerable
void layerChanged (QCPLayer *newLayer)
 
void layerChanged (QCPLayer *newLayer)
 

Detailed Description

template<class DataType>
class QCPAbstractPlottable1D< DataType >

A template base class for plottables with one-dimensional data.

This template class derives from QCPAbstractPlottable and from the abstract interface QCPPlottableInterface1D. It serves as a base class for all one-dimensional data (i.e. data with one key dimension), such as QCPGraph and QCPCurve.

The template parameter DataType is the type of the data points of this plottable (e.g. QCPGraphData or QCPCurveData). The main purpose of this base class is to provide the member mDataContainer (a shared pointer to a QCPDataContainer<DataType>) and implement the according virtual methods of the QCPPlottableInterface1D, such that most subclassed plottables don't need to worry about this anymore.

Further, it provides a convenience method for retrieving selected/unselected data segments via getDataSegments. This is useful when subclasses implement their draw method and need to draw selected segments with a different pen/brush than unselected segments (also see QCPSelectionDecorator).

This class implements basic functionality of QCPAbstractPlottable::selectTest and QCPPlottableInterface1D::selectTestRect, assuming point-like data points, based on the 1D data interface. In spite of that, most plottable subclasses will want to reimplement those methods again, to provide a more accurate hit test based on their specific data visualization geometry.

Constructor & Destructor Documentation

◆ QCPAbstractPlottable1D()

template<class DataType >
QCPAbstractPlottable1D< DataType >::QCPAbstractPlottable1D ( QCPAxis keyAxis,
QCPAxis valueAxis 
)

Forwards keyAxis and valueAxis to the QCPAbstractPlottable constructor and allocates the mDataContainer.

Member Function Documentation

◆ dataCount() [1/2]

template<class DataType >
int QCPAbstractPlottable1D< DataType >::dataCount ( ) const
virtual

Returns the number of data points of the plottable.

Implements QCPPlottableInterface1D.

◆ dataMainKey() [1/2]

template<class DataType >
double QCPAbstractPlottable1D< DataType >::dataMainKey ( int  index) const
virtual

Returns the main key of the data point at the given index.

What the main key is, is defined by the plottable's data type. See the QCPDataContainer DataType documentation for details about this naming convention.

Implements QCPPlottableInterface1D.

◆ dataSortKey() [1/2]

template<class DataType >
double QCPAbstractPlottable1D< DataType >::dataSortKey ( int  index) const
virtual

Returns the sort key of the data point at the given index.

What the sort key is, is defined by the plottable's data type. See the QCPDataContainer DataType documentation for details about this naming convention.

Implements QCPPlottableInterface1D.

◆ dataMainValue() [1/2]

template<class DataType >
double QCPAbstractPlottable1D< DataType >::dataMainValue ( int  index) const
virtual

Returns the main value of the data point at the given index.

What the main value is, is defined by the plottable's data type. See the QCPDataContainer DataType documentation for details about this naming convention.

Implements QCPPlottableInterface1D.

◆ dataValueRange() [1/2]

template<class DataType >
QCPRange QCPAbstractPlottable1D< DataType >::dataValueRange ( int  index) const
virtual

Returns the value range of the data point at the given index.

What the value range is, is defined by the plottable's data type. See the QCPDataContainer DataType documentation for details about this naming convention.

Implements QCPPlottableInterface1D.

◆ dataPixelPosition() [1/2]

template<class DataType >
QPointF QCPAbstractPlottable1D< DataType >::dataPixelPosition ( int  index) const
virtual

Returns the pixel position on the widget surface at which the data point at the given index appears.

Usually this corresponds to the point of dataMainKey/ dataMainValue, in pixel coordinates. However, depending on the plottable, this might be a different apparent position than just a coord-to-pixel transform of those values. For example, QCPBars apparent data values can be shifted depending on their stacking, bar grouping or configured base value.

Implements QCPPlottableInterface1D.

Reimplemented in QCPBars, and QCPBars.

◆ sortKeyIsMainKey() [1/2]

template<class DataType >
bool QCPAbstractPlottable1D< DataType >::sortKeyIsMainKey ( ) const
virtual

Returns whether the sort key (dataSortKey) is identical to the main key (dataMainKey).

What the sort and main keys are, is defined by the plottable's data type. See the QCPDataContainer DataType documentation for details about this naming convention.

Implements QCPPlottableInterface1D.

◆ selectTestRect() [1/2]

template<class DataType >
QCPDataSelection QCPAbstractPlottable1D< DataType >::selectTestRect ( const QRectF &  rect,
bool  onlySelectable 
) const
virtual

Implements a rect-selection algorithm assuming the data (accessed via the 1D data interface) is point-like. Most subclasses will want to reimplement this method again, to provide a more accurate hit test based on the true data visualization geometry.

For general information about this virtual method, see the base class implementation.

Implements QCPPlottableInterface1D.

Reimplemented in QCPFinancial, QCPStatisticalBox, QCPBars, QCPBars, QCPFinancial, and QCPStatisticalBox.

◆ findBegin() [1/2]

template<class DataType >
int QCPAbstractPlottable1D< DataType >::findBegin ( double  sortKey,
bool  expandedRange = true 
) const
virtual

Returns the index of the data point with a (sort-)key that is equal to, just below, or just above sortKey. If expandedRange is true, the data point just below sortKey will be considered, otherwise the one just above.

This can be used in conjunction with findEnd to iterate over data points within a given key range, including or excluding the bounding data points that are just beyond the specified range.

If expandedRange is true but there are no data points below sortKey, 0 is returned.

If the container is empty, returns 0 (in that case, findEnd will also return 0, so a loop using these methods will not iterate over the index 0).

See also
findEnd, QCPDataContainer::findBegin

Implements QCPPlottableInterface1D.

◆ findEnd() [1/2]

template<class DataType >
int QCPAbstractPlottable1D< DataType >::findEnd ( double  sortKey,
bool  expandedRange = true 
) const
virtual

Returns the index one after the data point with a (sort-)key that is equal to, just above, or just below sortKey. If expandedRange is true, the data point just above sortKey will be considered, otherwise the one just below.

This can be used in conjunction with findBegin to iterate over data points within a given key range, including the bounding data points that are just below and above the specified range.

If expandedRange is true but there are no data points above sortKey, the index just above the highest data point is returned.

If the container is empty, returns 0.

See also
findBegin, QCPDataContainer::findEnd

Implements QCPPlottableInterface1D.

◆ selectTest() [1/2]

template<class DataType >
double QCPAbstractPlottable1D< DataType >::selectTest ( const QPointF &  pos,
bool  onlySelectable,
QVariant *  details = 0 
) const
virtual

Implements a point-selection algorithm assuming the data (accessed via the 1D data interface) is point-like. Most subclasses will want to reimplement this method again, to provide a more accurate hit test based on the true data visualization geometry.

If details is not 0, it will be set to a QCPDataSelection, describing the closest data point to pos.

For general information about this virtual method, see the base class implementation.

Implements QCPAbstractPlottable.

Reimplemented in QCPFinancial, QCPStatisticalBox, QCPBars, QCPCurve, QCPGraph, QCPBars, QCPFinancial, QCPGraph, QCPStatisticalBox, and QCPCurve.

◆ interface1D() [1/2]

template<class DataType>
QCPPlottableInterface1D * QCPAbstractPlottable1D< DataType >::interface1D ( )
inlinevirtual

Returns a QCPPlottableInterface1D pointer to this plottable, providing access to its 1D interface.

For general information about this virtual method, see the base class implementation.

Reimplemented from QCPAbstractPlottable.

◆ getDataSegments()

template<class DataType >
void QCPAbstractPlottable1D< DataType >::getDataSegments ( QList< QCPDataRange > &  selectedSegments,
QList< QCPDataRange > &  unselectedSegments 
) const
protected

Splits all data into selected and unselected segments and outputs them via selectedSegments and unselectedSegments, respectively.

This is useful when subclasses implement their draw method and need to draw selected segments with a different pen/brush than unselected segments (also see QCPSelectionDecorator).

See also
setSelection

◆ drawPolyline()

template<class DataType >
void QCPAbstractPlottable1D< DataType >::drawPolyline ( QCPPainter painter,
const QVector< QPointF > &  lineData 
) const
protected

A helper method which draws a line with the passed painter, according to the pixel data in lineData. NaN points create gaps in the line, as expected from QCustomPlot's plottables (this is the main difference to QPainter's regular drawPolyline, which handles NaNs by lagging or crashing).

Further it uses a faster line drawing technique based on QCPPainter::drawLine rather than QPainter::drawPolyline if the configured QCustomPlot::setPlottingHints() and painter style allows.

◆ dataCount() [2/2]

template<class DataType>
virtual int QCPAbstractPlottable1D< DataType >::dataCount ( ) const
virtual

Returns the number of data points of the plottable.

Implements QCPPlottableInterface1D.

◆ dataMainKey() [2/2]

template<class DataType>
virtual double QCPAbstractPlottable1D< DataType >::dataMainKey ( int  index) const
virtual

Returns the main key of the data point at the given index.

What the main key is, is defined by the plottable's data type. See the QCPDataContainer DataType documentation for details about this naming convention.

Implements QCPPlottableInterface1D.

◆ dataSortKey() [2/2]

template<class DataType>
virtual double QCPAbstractPlottable1D< DataType >::dataSortKey ( int  index) const
virtual

Returns the sort key of the data point at the given index.

What the sort key is, is defined by the plottable's data type. See the QCPDataContainer DataType documentation for details about this naming convention.

Implements QCPPlottableInterface1D.

◆ dataMainValue() [2/2]

template<class DataType>
virtual double QCPAbstractPlottable1D< DataType >::dataMainValue ( int  index) const
virtual

Returns the main value of the data point at the given index.

What the main value is, is defined by the plottable's data type. See the QCPDataContainer DataType documentation for details about this naming convention.

Implements QCPPlottableInterface1D.

◆ dataValueRange() [2/2]

template<class DataType>
virtual QCPRange QCPAbstractPlottable1D< DataType >::dataValueRange ( int  index) const
virtual

Returns the value range of the data point at the given index.

What the value range is, is defined by the plottable's data type. See the QCPDataContainer DataType documentation for details about this naming convention.

Implements QCPPlottableInterface1D.

◆ dataPixelPosition() [2/2]

template<class DataType>
virtual QPointF QCPAbstractPlottable1D< DataType >::dataPixelPosition ( int  index) const
virtual

Returns the pixel position on the widget surface at which the data point at the given index appears.

Usually this corresponds to the point of dataMainKey/ dataMainValue, in pixel coordinates. However, depending on the plottable, this might be a different apparent position than just a coord-to-pixel transform of those values. For example, QCPBars apparent data values can be shifted depending on their stacking, bar grouping or configured base value.

Implements QCPPlottableInterface1D.

Reimplemented in QCPBars, and QCPBars.

◆ sortKeyIsMainKey() [2/2]

template<class DataType>
virtual bool QCPAbstractPlottable1D< DataType >::sortKeyIsMainKey ( ) const
virtual

Returns whether the sort key (dataSortKey) is identical to the main key (dataMainKey).

What the sort and main keys are, is defined by the plottable's data type. See the QCPDataContainer DataType documentation for details about this naming convention.

Implements QCPPlottableInterface1D.

◆ selectTestRect() [2/2]

template<class DataType>
virtual QCPDataSelection QCPAbstractPlottable1D< DataType >::selectTestRect ( const QRectF &  rect,
bool  onlySelectable 
) const
virtual

Returns a data selection containing all the data points of this plottable which are contained (or hit by) rect. This is used mainly in the selection rect interaction for data selection (data selection mechanism).

If onlySelectable is true, an empty QCPDataSelection is returned if this plottable is not selectable (i.e. if QCPAbstractPlottable::setSelectable is QCP::stNone).

Note
rect must be a normalized rect (positive or zero width and height). This is especially important when using the rect of QCPSelectionRect::accepted, which is not necessarily normalized. Use QRect::normalized() when passing a rect which might not be normalized.

Implements QCPPlottableInterface1D.

Reimplemented in QCPFinancial, QCPStatisticalBox, QCPBars, QCPBars, QCPFinancial, and QCPStatisticalBox.

◆ findBegin() [2/2]

template<class DataType>
virtual int QCPAbstractPlottable1D< DataType >::findBegin ( double  sortKey,
bool  expandedRange = true 
) const
virtual

Returns the index of the data point with a (sort-)key that is equal to, just below, or just above sortKey. If expandedRange is true, the data point just below sortKey will be considered, otherwise the one just above.

This can be used in conjunction with findEnd to iterate over data points within a given key range, including or excluding the bounding data points that are just beyond the specified range.

If expandedRange is true but there are no data points below sortKey, 0 is returned.

If the container is empty, returns 0 (in that case, findEnd will also return 0, so a loop using these methods will not iterate over the index 0).

See also
findEnd, QCPDataContainer::findBegin

Implements QCPPlottableInterface1D.

◆ findEnd() [2/2]

template<class DataType>
virtual int QCPAbstractPlottable1D< DataType >::findEnd ( double  sortKey,
bool  expandedRange = true 
) const
virtual

Returns the index one after the data point with a (sort-)key that is equal to, just above, or just below sortKey. If expandedRange is true, the data point just above sortKey will be considered, otherwise the one just below.

This can be used in conjunction with findBegin to iterate over data points within a given key range, including the bounding data points that are just below and above the specified range.

If expandedRange is true but there are no data points above sortKey, the index just above the highest data point is returned.

If the container is empty, returns 0.

See also
findBegin, QCPDataContainer::findEnd

Implements QCPPlottableInterface1D.

◆ selectTest() [2/2]

template<class DataType>
virtual double QCPAbstractPlottable1D< DataType >::selectTest ( const QPointF &  pos,
bool  onlySelectable,
QVariant *  details = 0 
) const
virtual

This function is used to decide whether a click hits a layerable object or not.

pos is a point in pixel coordinates on the QCustomPlot surface. This function returns the shortest pixel distance of this point to the object. If the object is either invisible or the distance couldn't be determined, -1.0 is returned. Further, if onlySelectable is true and the object is not selectable, -1.0 is returned, too.

If the object is represented not by single lines but by an area like a QCPItemText or the bars of a QCPBars plottable, a click inside the area should also be considered a hit. In these cases this function thus returns a constant value greater zero but still below the parent plot's selection tolerance. (typically the selectionTolerance multiplied by 0.99).

Providing a constant value for area objects allows selecting line objects even when they are obscured by such area objects, by clicking close to the lines (i.e. closer than 0.99*selectionTolerance).

The actual setting of the selection state is not done by this function. This is handled by the parent QCustomPlot when the mouseReleaseEvent occurs, and the finally selected object is notified via the selectEvent/ deselectEvent methods.

details is an optional output parameter. Every layerable subclass may place any information in details. This information will be passed to selectEvent when the parent QCustomPlot decides on the basis of this selectTest call, that the object was successfully selected. The subsequent call to selectEvent will carry the details. This is useful for multi-part objects (like QCPAxis). This way, a possibly complex calculation to decide which part was clicked is only done once in selectTest. The result (i.e. the actually clicked part) can then be placed in details. So in the subsequent selectEvent, the decision which part was selected doesn't have to be done a second time for a single selection operation.

In the case of 1D Plottables (QCPAbstractPlottable1D, like QCPGraph or QCPBars) details will be set to a QCPDataSelection, describing the closest data point to pos.

You may pass 0 as details to indicate that you are not interested in those selection details.

See also
selectEvent, deselectEvent, mousePressEvent, wheelEvent, QCustomPlot::setInteractions, QCPAbstractPlottable1D::selectTestRect

Implements QCPAbstractPlottable.

Reimplemented in QCPFinancial, QCPStatisticalBox, QCPBars, QCPCurve, QCPGraph, QCPBars, QCPFinancial, QCPGraph, QCPStatisticalBox, and QCPCurve.

◆ interface1D() [2/2]

template<class DataType>
virtual QCPPlottableInterface1D* QCPAbstractPlottable1D< DataType >::interface1D ( )
inlinevirtual

If this plottable is a one-dimensional plottable, i.e. it implements the QCPPlottableInterface1D, returns the this pointer with that type. Otherwise (e.g. in the case of a QCPColorMap) returns zero.

You can use this method to gain read access to data coordinates while holding a pointer to the abstract base class only.

Reimplemented from QCPAbstractPlottable.


The documentation for this class was generated from the following files: