QCPAxisRect Class Reference

· · ·
Public Functions | Protected Functions
QCPAxisRect Class Reference

Holds multiple axes and arranges them in a rectangular shape. More...

Inheritance diagram for QCPAxisRect:

## Public Functions
| QCPAxisRect (QCustomPlot *parentPlot, bool setupDefaultAxes=true)
QPixmap | background () const
bool | backgroundScaled () const
Qt::AspectRatioMode | backgroundScaledMode () const
Qt::Orientations | rangeDrag () const
Qt::Orientations | rangeZoom () const
QCPAxis * | rangeDragAxis (Qt::Orientation orientation)
QCPAxis * | rangeZoomAxis (Qt::Orientation orientation)
double | rangeZoomFactor (Qt::Orientation orientation)
void | setBackground (const QPixmap &pm)
void | setBackground (const QPixmap &pm, bool scaled, Qt::AspectRatioMode mode=Qt::KeepAspectRatioByExpanding)
void | setBackground (const QBrush &brush)
void | setBackgroundScaled (bool scaled)
void | setBackgroundScaledMode (Qt::AspectRatioMode mode)
void | setRangeDrag (Qt::Orientations orientations)
void | setRangeZoom (Qt::Orientations orientations)
void | setRangeDragAxes (QCPAxis *horizontal, QCPAxis *vertical)
void | setRangeZoomAxes (QCPAxis *horizontal, QCPAxis *vertical)
void | setRangeZoomFactor (double horizontalFactor, double verticalFactor)
void | setRangeZoomFactor (double factor)
int | axisCount (QCPAxis::AxisType type) const
QCPAxis * | axis (QCPAxis::AxisType type, int index=0) const
QList< QCPAxis * > | axes (QCPAxis::AxisTypes types) const
QList< QCPAxis * > | axes () const
QCPAxis * | addAxis (QCPAxis::AxisType type)
QList< QCPAxis * > | addAxes (QCPAxis::AxisTypes types)
bool | removeAxis (QCPAxis *axis)
QCPLayoutInset * | insetLayout () const
void | setupFullAxesBox (bool connectRanges=false)
QList< QCPAbstractPlottable * > | plottables () const
QList< QCPGraph * > | graphs () const
QList< QCPAbstractItem * > | items () const
int | left () const
int | right () const
int | top () const
int | bottom () const
int | width () const
int | height () const
QSize | size () const
QPoint | topLeft () const
QPoint | topRight () const
QPoint | bottomLeft () const
QPoint | bottomRight () const
QPoint | center () const
virtual void | update ()
virtual QList< QCPLayoutElement * > | elements (bool recursive) const
QCPLayout * | layout () const
QRect | rect () const
QRect | outerRect () const
QMargins | margins () const
QMargins | minimumMargins () const
QCP::MarginSides | autoMargins () const
QSize | minimumSize () const
QSize | maximumSize () const
QCPMarginGroup * | marginGroup (QCP::MarginSide side) const
QHash< QCP::MarginSide, QCPMarginGroup * > | marginGroups () const
void | setOuterRect (const QRect &rect)
void | setMargins (const QMargins &margins)
void | setMinimumMargins (const QMargins &margins)
void | setAutoMargins (QCP::MarginSides sides)
void | setMinimumSize (const QSize &size)
void | setMinimumSize (int width, int height)
void | setMaximumSize (const QSize &size)
void | setMaximumSize (int width, int height)
void | setMarginGroup (QCP::MarginSides sides, QCPMarginGroup *group)
virtual QSize | minimumSizeHint () const
virtual QSize | maximumSizeHint () const
virtual double | selectTest (const QPointF &pos, bool onlySelectable, QVariant *details=0) const
bool | visible () const
QCustomPlot * | parentPlot () const
QCPLayerable * | parentLayerable () const
QCPLayer * | layer () const
bool | antialiased () const
void | setVisible (bool on)
bool | setLayer (QCPLayer *layer)
bool | setLayer (const QString &layerName)
void | setAntialiased (bool enabled)
bool | realVisibility () const

## Protected Functions
virtual void | applyDefaultAntialiasingHint (QCPPainter *painter) const
virtual void | draw (QCPPainter *painter)
virtual int | calculateAutoMargin (QCP::MarginSide side)
virtual void | mousePressEvent (QMouseEvent *event)
virtual void | mouseMoveEvent (QMouseEvent *event)
virtual void | mouseReleaseEvent (QMouseEvent *event)
virtual void | wheelEvent (QWheelEvent *event)
void | drawBackground (QCPPainter *painter)
void | updateAxesOffset (QCPAxis::AxisType type)
virtual void | mouseDoubleClickEvent (QMouseEvent *event)
virtual void | parentPlotInitialized (QCustomPlot *parentPlot)
virtual QCP::Interaction | selectionCategory () const
virtual QRect | clipRect () const
virtual void | selectEvent (QMouseEvent *event, bool additive, const QVariant &details, bool *selectionStateChanged)
virtual void | deselectEvent (bool *selectionStateChanged)
void | initializeParentPlot (QCustomPlot *parentPlot)
void | setParentLayerable (QCPLayerable *parentLayerable)
bool | moveToLayer (QCPLayer *layer, bool prepend)
void | applyAntialiasingHint (QCPPainter *painter, bool localAntialiased, QCP::AntialiasedElement overrideElement) const

## Detailed Description

Holds multiple axes and arranges them in a rectangular shape.

This class represents an axis rect, a rectangular area that is bounded on all sides with an arbitrary number of axes.

Initially QCustomPlot has one axis rect, accessible via QCustomPlot::axisRect(). However, the layout system allows to have multiple axis rects, e.g. arranged in a grid layout (QCustomPlot::plotLayout).

By default, QCPAxisRect comes with four axes, at bottom, top, left and right. They can be accessed via axis by providing the respective axis type (QCPAxis::AxisType) and index. If you need all axes in the axis rect, use axes. The top and right axes are set to be invisible initially (QCPAxis::setVisible). To add more axes to a side, use addAxis or addAxes. To remove an axis, use removeAxis.

The axis rect layerable itself only draws a background pixmap or color, if specified (setBackground). It is placed on the "background" layer initially (see QCPLayer for an explanation of the QCustomPlot layer system). The axes that are held by the axis rect can be placed on other layers, independently of the axis rect.

Every axis rect has a child layout of type QCPLayoutInset. It is accessible via insetLayout and can be used to have other layout elements (or even other layouts with multiple elements) hovering inside the axis rect.

If an axis rect is clicked and dragged, it processes this by moving certain axis ranges. The behaviour can be controlled with setRangeDrag and setRangeDragAxes. If the mouse wheel is scrolled while the cursor is on the axis rect, certain axes are scaled. This is controllable via setRangeZoom, setRangeZoomAxes and setRangeZoomFactor. These interactions are only enabled if QCustomPlot::setInteractions contains QCP::iRangeDrag and QCP::iRangeZoom.

Overview of the spacings and paddings that define the geometry of an axis. The dashed line on the far left indicates the viewport/widget border.

## Constructor & Destructor Documentation

QCPAxisRect::QCPAxisRect | ( | QCustomPlot * | parentPlot,
|  | bool | setupDefaultAxes = `true`
| ) |  |
| explicit

Creates a QCPAxisRect instance and sets default values. An axis is added for each of the four sides, the top and right axes are set invisible initially.

## Member Function Documentation

QCPAxis * QCPAxisRect::rangeDragAxis | ( | Qt::Orientation | orientation | ) |

Returns the range drag axis of the orientation provided.

See Also
  setRangeDragAxes

QCPAxis * QCPAxisRect::rangeZoomAxis | ( | Qt::Orientation | orientation | ) |

Returns the range zoom axis of the orientation provided.

See Also
  setRangeZoomAxes

double QCPAxisRect::rangeZoomFactor | ( | Qt::Orientation | orientation | ) |

Returns the range zoom factor of the orientation provided.

See Also
  setRangeZoomFactor

void QCPAxisRect::setBackground | ( | const QPixmap & | pm | ) |

Sets pm as the axis background pixmap. The axis background pixmap will be drawn inside the axis rect. Since axis rects place themselves on the "background" layer by default, the axis rect backgrounds are usually drawn below everything else.

For cases where the provided pixmap doesn't have the same size as the axis rect, scaling can be enabled with setBackgroundScaled and the scaling mode (i.e. whether and how the aspect ratio is preserved) can be set with setBackgroundScaledMode. To set all these options in one call, consider using the overloaded version of this function.

Below the pixmap, the axis rect may be optionally filled with a brush, if specified with setBackground(const QBrush &brush).

See Also
  setBackgroundScaled, setBackgroundScaledMode, setBackground(const QBrush &brush)

void QCPAxisRect::setBackground | ( | const QPixmap & | pm,
|  | bool | scaled,
|  | Qt::AspectRatioMode | mode = `Qt::KeepAspectRatioByExpanding`
| ) |  |

This is an overloaded function.

Allows setting the background pixmap of the axis rect, whether it shall be scaled and how it shall be scaled in one call.

See Also
  setBackground(const QPixmap &pm), setBackgroundScaled, setBackgroundScaledMode

void QCPAxisRect::setBackground | ( | const QBrush & | brush | ) |

This is an overloaded function.

Sets brush as the background brush. The axis rect background will be filled with this brush. Since axis rects place themselves on the "background" layer by default, the axis rect backgrounds are usually drawn below everything else.

The brush will be drawn before (under) any background pixmap, which may be specified with setBackground(const QPixmap &pm).

To disable drawing of a background brush, set brush to Qt::NoBrush.

See Also
  setBackground(const QPixmap &pm)

void QCPAxisRect::setBackgroundScaled | ( | bool | scaled | ) |

Sets whether the axis background pixmap shall be scaled to fit the axis rect or not. If scaled is set to true, you may control whether and how the aspect ratio of the original pixmap is preserved with setBackgroundScaledMode.

Note that the scaled version of the original pixmap is buffered, so there is no performance penalty on replots. (Except when the axis rect dimensions are changed continuously.)

See Also
  setBackground, setBackgroundScaledMode

void QCPAxisRect::setBackgroundScaledMode | ( | Qt::AspectRatioMode | mode | ) |

If scaling of the axis background pixmap is enabled (setBackgroundScaled), use this function to define whether and how the aspect ratio of the original pixmap passed to setBackground is preserved.

See Also
  setBackground, setBackgroundScaled

void QCPAxisRect::setRangeDrag | ( | Qt::Orientations | orientations | ) |

Sets which axis orientation may be range dragged by the user with mouse interaction. What orientation corresponds to which specific axis can be set with setRangeDragAxes(QCPAxis *horizontal, QCPAxis *vertical). By default, the horizontal axis is the bottom axis (xAxis) and the vertical axis is the left axis (yAxis).

To disable range dragging entirely, pass 0 as orientations or remove QCP::iRangeDrag from QCustomPlot::setInteractions. To enable range dragging for both directions, pass `Qt::Horizontal | Qt::Vertical` as orientations.

In addition to setting orientations to a non-zero value, make sure QCustomPlot::setInteractions contains QCP::iRangeDrag to enable the range dragging interaction.

See Also
  setRangeZoom, setRangeDragAxes, setNoAntialiasingOnDrag

void QCPAxisRect::setRangeZoom | ( | Qt::Orientations | orientations | ) |

Sets which axis orientation may be zoomed by the user with the mouse wheel. What orientation corresponds to which specific axis can be set with setRangeZoomAxes(QCPAxis *horizontal, QCPAxis *vertical). By default, the horizontal axis is the bottom axis (xAxis) and the vertical axis is the left axis (yAxis).

To disable range zooming entirely, pass 0 as orientations or remove QCP::iRangeZoom from QCustomPlot::setInteractions. To enable range zooming for both directions, pass `Qt::Horizontal | Qt::Vertical` as orientations.

In addition to setting orientations to a non-zero value, make sure QCustomPlot::setInteractions contains QCP::iRangeZoom to enable the range zooming interaction.

See Also
  setRangeZoomFactor, setRangeZoomAxes, setRangeDrag

void QCPAxisRect::setRangeDragAxes | ( | QCPAxis * | horizontal,
|  | QCPAxis * | vertical
| ) |  |

Sets the axes whose range will be dragged when setRangeDrag enables mouse range dragging on the QCustomPlot widget.

See Also
  setRangeZoomAxes

void QCPAxisRect::setRangeZoomAxes | ( | QCPAxis * | horizontal,
|  | QCPAxis * | vertical
| ) |  |

Sets the axes whose range will be zoomed when setRangeZoom enables mouse wheel zooming on the QCustomPlot widget. The two axes can be zoomed with different strengths, when different factors are passed to setRangeZoomFactor(double horizontalFactor, double verticalFactor).

See Also
  setRangeDragAxes

void QCPAxisRect::setRangeZoomFactor | ( | double | horizontalFactor,
|  | double | verticalFactor
| ) |  |

Sets how strong one rotation step of the mouse wheel zooms, when range zoom was activated with setRangeZoom. The two parameters horizontalFactor and verticalFactor provide a way to let the horizontal axis zoom at different rates than the vertical axis. Which axis is horizontal and which is vertical, can be set with setRangeZoomAxes.

When the zoom factor is greater than one, scrolling the mouse wheel backwards (towards the user) will zoom in (make the currently visible range smaller). For zoom factors smaller than one, the same scrolling direction will zoom out.

void QCPAxisRect::setRangeZoomFactor | ( | double | factor | ) |

This is an overloaded function.

Sets both the horizontal and vertical zoom factor.

int QCPAxisRect::axisCount | ( | QCPAxis::AxisType | type | ) | const

Returns the number of axes on the axis rect side specified with type.

See Also
  axis

QCPAxis * QCPAxisRect::axis | ( | QCPAxis::AxisType | type,
|  | int | index = `0`
| ) |  | const

Returns the axis with the given index on the axis rect side specified with type.

See Also
  axisCount, axes

QList< QCPAxis * > QCPAxisRect::axes | ( | QCPAxis::AxisTypes | types | ) | const

Returns all axes on the axis rect sides specified with types.

types may be a single QCPAxis::AxisType or an `or`-combination, to get the axes of multiple sides.

See Also
  axis

QList< QCPAxis * > QCPAxisRect::axes | ( |  | ) | const

This is an overloaded function.

Returns all axes of this axis rect.

QCPAxis * QCPAxisRect::addAxis | ( | QCPAxis::AxisType | type | ) |

Adds a new axis to the axis rect side specified with type, and returns it.

If an axis rect side already contains one or more axes, the lower and upper endings of the new axis (QCPAxis::setLowerEnding, QCPAxis::setUpperEnding) are initialized to QCPLineEnding::esHalfBar.

See Also
  addAxes, setupFullAxesBox

QList< QCPAxis * > QCPAxisRect::addAxes | ( | QCPAxis::AxisTypes | types | ) |

Adds a new axis with addAxis to each axis rect side specified in types. This may be an `or`-combination of QCPAxis::AxisType, so axes can be added to multiple sides at once.

Returns a list of the added axes.

See Also
  addAxis, setupFullAxesBox

bool QCPAxisRect::removeAxis | ( | QCPAxis * | axis | ) |

Removes the specified axis from the axis rect and deletes it.

Returns true on success, i.e. if axis was a valid axis in this axis rect.

See Also
  addAxis

QCPLayoutInset * QCPAxisRect::insetLayout | ( |  | ) | const
| inline

Returns the inset layout of this axis rect. It can be used to place other layout elements (or even layouts with multiple other elements) inside/on top of an axis rect.

See Also
  QCPLayoutInset

void QCPAxisRect::setupFullAxesBox | ( | bool | connectRanges = `false` | ) |

Convenience function to create an axis on each side that doesn't have any axes yet, and assign the top/right axes the following properties of the bottom/left axes (even if they already existed and weren't created by this function):

- range (QCPAxis::setRange)
- range reversed (QCPAxis::setRangeReversed)
- scale type (QCPAxis::setScaleType)
- scale log base (QCPAxis::setScaleLogBase)
- ticks (QCPAxis::setTicks)
- auto (major) tick count (QCPAxis::setAutoTickCount)
- sub tick count (QCPAxis::setSubTickCount)
- auto sub ticks (QCPAxis::setAutoSubTicks)
- tick step (QCPAxis::setTickStep)
- auto tick step (QCPAxis::setAutoTickStep)

Tick labels (QCPAxis::setTickLabels) of the right and top axes are set to false.

If connectRanges is true, the rangeChanged signals of the bottom and left axes are connected to the QCPAxis::setRange slots of the top and right axes.

QList< QCPAbstractPlottable * > QCPAxisRect::plottables | ( |  | ) | const

Returns a list of all the plottables that are associated with this axis rect.

A plottable is considered associated with an axis rect if its key or value axis (or both) is in this axis rect.

See Also
  graphs, items

QList< QCPGraph * > QCPAxisRect::graphs | ( |  | ) | const

Returns a list of all the graphs that are associated with this axis rect.

A graph is considered associated with an axis rect if its key or value axis (or both) is in this axis rect.

See Also
  plottables, items

QList< QCPAbstractItem * > QCPAxisRect::items | ( |  | ) | const

Returns a list of all the items that are associated with this axis rect.

An item is considered associated with an axis rect if any of its positions has key or value axis set to an axis that is in this axis rect, or if any of its positions has QCPItemPosition::setAxisRect set to the axis rect, or if the clip axis rect (QCPAbstractItem::setClipAxisRect) is set to this axis rect.

See Also
  plottables, graphs

int QCPAxisRect::left | ( |  | ) | const
| inline

Returns the pixel position of the left border of this axis rect. Margins are not taken into account here, so the returned value is with respect to the inner rect.

int QCPAxisRect::right | ( |  | ) | const
| inline

Returns the pixel position of the right border of this axis rect. Margins are not taken into account here, so the returned value is with respect to the inner rect.

int QCPAxisRect::top | ( |  | ) | const
| inline

Returns the pixel position of the top border of this axis rect. Margins are not taken into account here, so the returned value is with respect to the inner rect.

int QCPAxisRect::bottom | ( |  | ) | const
| inline

Returns the pixel position of the bottom border of this axis rect. Margins are not taken into account here, so the returned value is with respect to the inner rect.

int QCPAxisRect::width | ( |  | ) | const
| inline

Returns the pixel width of this axis rect. Margins are not taken into account here, so the returned value is with respect to the inner rect.

int QCPAxisRect::height | ( |  | ) | const
| inline

Returns the pixel height of this axis rect. Margins are not taken into account here, so the returned value is with respect to the inner rect.

QSize QCPAxisRect::size | ( |  | ) | const
| inline

Returns the pixel size of this axis rect. Margins are not taken into account here, so the returned value is with respect to the inner rect.

QPoint QCPAxisRect::topLeft | ( |  | ) | const
| inline

Returns the top left corner of this axis rect in pixels. Margins are not taken into account here, so the returned value is with respect to the inner rect.

QPoint QCPAxisRect::topRight | ( |  | ) | const
| inline

Returns the top right corner of this axis rect in pixels. Margins are not taken into account here, so the returned value is with respect to the inner rect.

QPoint QCPAxisRect::bottomLeft | ( |  | ) | const
| inline

Returns the bottom left corner of this axis rect in pixels. Margins are not taken into account here, so the returned value is with respect to the inner rect.

QPoint QCPAxisRect::bottomRight | ( |  | ) | const
| inline

Returns the bottom right corner of this axis rect in pixels. Margins are not taken into account here, so the returned value is with respect to the inner rect.

QPoint QCPAxisRect::center | ( |  | ) | const
| inline

Returns the center of this axis rect in pixels. Margins are not taken into account here, so the returned value is with respect to the inner rect.

void QCPAxisRect::update | ( |  | ) |
| virtual

This method is called automatically upon replot and doesn't need to be called by users of QCPAxisRect.

Calls the base class implementation to update the margins (see QCPLayoutElement::update), and finally passes the rect to the inset layout (insetLayout) and calls its QCPInsetLayout::update function.

Reimplemented from QCPLayoutElement.

QList< QCPLayoutElement * > QCPAxisRect::elements | ( | bool | recursive | ) | const
| virtual

Returns a list of all child elements in this layout element. If recursive is true, all sub-child elements are included in the list, too.

Note that there may be entries with value 0 in the returned list. (For example, QCPLayoutGrid may have empty cells which yield 0 at the respective index.)

Reimplemented from QCPLayoutElement.

void QCPAxisRect::applyDefaultAntialiasingHint | ( | QCPPainter * | painter | ) | const
| protectedvirtual

This function applies the default antialiasing setting to the specified painter, using the function applyAntialiasingHint. It is the antialiasing state the painter is put in, when draw is called on the layerable. If the layerable has multiple entities whose antialiasing setting may be specified individually, this function should set the antialiasing state of the most prominent entity. In this case however, the draw function usually calls the specialized versions of this function before drawing each entity, effectively overriding the setting of the default antialiasing hint.

First example: QCPGraph has multiple entities that have an antialiasing setting: The graph line, fills, scatters and error bars. Those can be configured via QCPGraph::setAntialiased, QCPGraph::setAntialiasedFill, QCPGraph::setAntialiasedScatters etc. Consequently, there isn't only the QCPGraph::applyDefaultAntialiasingHint function (which corresponds to the graph line's antialiasing), but specialized ones like QCPGraph::applyFillAntialiasingHint and QCPGraph::applyScattersAntialiasingHint. So before drawing one of those entities, QCPGraph::draw calls the respective specialized applyAntialiasingHint function.

Second example: QCPItemLine consists only of a line so there is only one antialiasing setting which can be controlled with QCPItemLine::setAntialiased. (This function is inherited by all layerables. The specialized functions, as seen on QCPGraph, must be added explicitly to the respective layerable subclass.) Consequently it only has the normal QCPItemLine::applyDefaultAntialiasingHint. The QCPItemLine::draw function doesn't need to care about setting any antialiasing states, because the default antialiasing hint is already set on the painter when the draw function is called, and that's the state it wants to draw the line with.

Reimplemented from QCPLayoutElement.

void QCPAxisRect::draw | ( | QCPPainter * | painter | ) |
| protectedvirtual

This function draws the layerable with the specified painter. It is only called by QCustomPlot, if the layerable is visible (setVisible).

Before this function is called, the painter's antialiasing state is set via applyDefaultAntialiasingHint, see the documentation there. Further, the clipping rectangle was set to clipRect.

Reimplemented from QCPLayoutElement.

int QCPAxisRect::calculateAutoMargin | ( | QCP::MarginSide | side | ) |
| protectedvirtual

Returns the margin size for this side. It is used if automatic margins is enabled for this side (see setAutoMargins). If a minimum margin was set with setMinimumMargins, the returned value will not be smaller than the specified minimum margin.

The default implementation just returns the respective manual margin (setMargins) or the minimum margin, whichever is larger.

Reimplemented from QCPLayoutElement.

void QCPAxisRect::mousePressEvent | ( | QMouseEvent * | event | ) |
| protectedvirtual

Event handler for when a mouse button is pressed on the axis rect. If the left mouse button is pressed, the range dragging interaction is initialized (the actual range manipulation happens in the mouseMoveEvent).

The mDragging flag is set to true and some anchor points are set that are needed to determine the distance the mouse was dragged in the mouse move/release events later.

See Also
  mouseMoveEvent, mouseReleaseEvent

Reimplemented from QCPLayoutElement.

void QCPAxisRect::mouseMoveEvent | ( | QMouseEvent * | event | ) |
| protectedvirtual

Event handler for when the mouse is moved on the axis rect. If range dragging was activated in a preceding mousePressEvent, the range is moved accordingly.

See Also
  mousePressEvent, mouseReleaseEvent

Reimplemented from QCPLayoutElement.

void QCPAxisRect::mouseReleaseEvent | ( | QMouseEvent * | event | ) |
| protectedvirtual

This event is called, if the mouse was previously pressed inside the outer rect of this layout element and is now released.

Reimplemented from QCPLayoutElement.

void QCPAxisRect::wheelEvent | ( | QWheelEvent * | event | ) |
| protectedvirtual

Event handler for mouse wheel events. If rangeZoom is Qt::Horizontal, Qt::Vertical or both, the ranges of the axes defined as rangeZoomHorzAxis and rangeZoomVertAxis are scaled. The center of the scaling operation is the current cursor position inside the axis rect. The scaling factor is dependant on the mouse wheel delta (which direction the wheel was rotated) to provide a natural zooming feel. The Strength of the zoom can be controlled via setRangeZoomFactor.

Note, that event->delta() is usually +/-120 for single rotation steps. However, if the mouse wheel is turned rapidly, many steps may bunch up to one event, so the event->delta() may then be multiples of 120. This is taken into account here, by calculating wheelSteps and using it as exponent of the range zoom factor. This takes care of the wheel direction automatically, by inverting the factor, when the wheel step is negative (f^-1 = 1/f).

Reimplemented from QCPLayoutElement.

void QCPAxisRect::drawBackground | ( | QCPPainter * | painter | ) |
| protected

Draws the background of this axis rect. It may consist of a background fill (a QBrush) and a pixmap.

If a brush was given via setBackground(const QBrush &brush), this function first draws an according filling inside the axis rect with the provided painter.

Then, if a pixmap was provided via setBackground, this function buffers the scaled version depending on setBackgroundScaled and setBackgroundScaledMode and then draws it inside the axis rect with the provided painter. The scaled version is buffered in mScaledBackgroundPixmap to prevent expensive rescaling at every redraw. It is only updated, when the axis rect has changed in a way that requires a rescale of the background pixmap (this is dependant on the setBackgroundScaledMode), or when a differend axis backgroud pixmap was set.

See Also
  setBackground, setBackgroundScaled, setBackgroundScaledMode

void QCPAxisRect::updateAxesOffset | ( | QCPAxis::AxisType | type | ) |
| protected

This function makes sure multiple axes on the side specified with type don't collide, but are distributed according to their respective space requirement (QCPAxis::calculateMargin).

It does this by setting an appropriate offset (QCPAxis::setOffset) on all axes except the one with index zero.

This function is called by calculateAutoMargin.

QCPLayout * QCPLayoutElement::layout | ( |  | ) | const
| inlineinherited

Returns the parent layout of this layout element.

QRect QCPLayoutElement::rect | ( |  | ) | const
| inlineinherited

Returns the inner rect of this layout element. The inner rect is the outer rect (setOuterRect) shrinked by the margins (setMargins, setAutoMargins).

In some cases, the area between outer and inner rect is left blank. In other cases the margin area is used to display peripheral graphics while the main content is in the inner rect. This is where automatic margin calculation becomes interesting because it allows the layout element to adapt the margins to the peripheral graphics it wants to draw. For example, QCPAxisRect draws the axis labels and tick labels in the margin area, thus needs to adjust the margins (if setAutoMargins is enabled) according to the space required by the labels of the axes.

void QCPLayoutElement::setOuterRect | ( | const QRect & | rect | ) |
| inherited

Sets the outer rect of this layout element. If the layout element is inside a layout, the layout sets the position and size of this layout element using this function.

Calling this function externally has no effect, since the layout will overwrite any changes to the outer rect upon the next replot.

The layout element will adapt its inner rect by applying the margins inward to the outer rect.

See Also
  rect

void QCPLayoutElement::setMargins | ( | const QMargins & | margins | ) |
| inherited

Sets the margins of this layout element. If setAutoMargins is disabled for some or all sides, this function is used to manually set the margin on those sides. Sides that are still set to be handled automatically are ignored and may have any value in margins.

The margin is the distance between the outer rect (controlled by the parent layout via setOuterRect) and the inner rect (which usually contains the main content of this layout element).

See Also
  setAutoMargins

void QCPLayoutElement::setMinimumMargins | ( | const QMargins & | margins | ) |
| inherited

If setAutoMargins is enabled on some or all margins, this function is used to provide minimum values for those margins.

The minimum values are not enforced on margin sides that were set to be under manual control via setAutoMargins.

See Also
  setAutoMargins

void QCPLayoutElement::setAutoMargins | ( | QCP::MarginSides | sides | ) |
| inherited

Sets on which sides the margin shall be calculated automatically. If a side is calculated automatically, a minimum margin value may be provided with setMinimumMargins. If a side is set to be controlled manually, the value may be specified with setMargins.

Margin sides that are under automatic control may participate in a QCPMarginGroup (see setMarginGroup), to synchronize (align) it with other layout elements in the plot.

See Also
  setMinimumMargins, setMargins

void QCPLayoutElement::setMinimumSize | ( | const QSize & | size | ) |
| inherited

Sets the minimum size for the inner rect of this layout element. A parent layout tries to respect the size here by changing row/column sizes in the layout accordingly.

If the parent layout size is not sufficient to satisfy all minimum size constraints of its child layout elements, the layout may set a size that is actually smaller than size. QCustomPlot propagates the layout's size constraints to the outside by setting its own minimum QWidget size accordingly, so violations of size should be exceptions.

void QCPLayoutElement::setMinimumSize | ( | int | width,
|  | int | height
| ) |  |
| inherited

This is an overloaded function.

Sets the minimum size for the inner rect of this layout element.

void QCPLayoutElement::setMaximumSize | ( | const QSize & | size | ) |
| inherited

Sets the maximum size for the inner rect of this layout element. A parent layout tries to respect the size here by changing row/column sizes in the layout accordingly.

void QCPLayoutElement::setMaximumSize | ( | int | width,
|  | int | height
| ) |  |
| inherited

This is an overloaded function.

Sets the maximum size for the inner rect of this layout element.

void QCPLayoutElement::setMarginGroup | ( | QCP::MarginSides | sides,
|  | QCPMarginGroup * | group
| ) |  |
| inherited

Sets the margin group of the specified margin sides.

Margin groups allow synchronizing specified margins across layout elements, see the documentation of QCPMarginGroup.

To unset the margin group of sides, set group to 0.

Note that margin groups only work for margin sides that are set to automatic (setAutoMargins).

QSize QCPLayoutElement::minimumSizeHint | ( |  | ) | const
| virtualinherited

Returns the minimum size this layout element (the inner rect) may be compressed to.

if a minimum size (setMinimumSize) was not set manually, parent layouts consult this function to determine the minimum allowed size of this layout element. (A manual minimum size is considered set if it is non-zero.)

Reimplemented in QCPLayoutGrid, QCPPlottableLegendItem, and QCPPlotTitle.

QSize QCPLayoutElement::maximumSizeHint | ( |  | ) | const
| virtualinherited

Returns the maximum size this layout element (the inner rect) may be expanded to.

if a maximum size (setMaximumSize) was not set manually, parent layouts consult this function to determine the maximum allowed size of this layout element. (A manual maximum size is considered set if it is smaller than Qt's QWIDGETSIZE_MAX.)

Reimplemented in QCPLayoutGrid, and QCPPlotTitle.

double QCPLayoutElement::selectTest | ( | const QPointF & | pos,
|  | bool | onlySelectable,
|  | QVariant * | details = `0`
| ) |  | const
| virtualinherited

Layout elements are sensitive to events inside their outer rect. If pos is within the outer rect, this method returns a value corresponding to 0.99 times the parent plot's selection tolerance. However, layout elements are not selectable by default. So if onlySelectable is true, -1.0 is returned.

See QCPLayerable::selectTest for a general explanation of this virtual method.

QCPLayoutElement subclasses may reimplement this method to provide more specific selection test behaviour.

Reimplemented from QCPLayerable.

Reimplemented in QCPLayoutInset, QCPLegend, QCPAbstractLegendItem, and QCPPlotTitle.

void QCPLayoutElement::mouseDoubleClickEvent | ( | QMouseEvent * | event | ) |
| inlineprotectedvirtualinherited

This event is called, if the mouse is double-clicked inside the outer rect of this layout element.

void QCPLayoutElement::parentPlotInitialized | ( | QCustomPlot * | parentPlot | ) |
| protectedvirtualinherited

propagates the parent plot initialization to all child elements, by calling QCPLayerable::initializeParentPlot on them.

Reimplemented from QCPLayerable.

Reimplemented in QCPLegend.

QCPLayerable * QCPLayerable::parentLayerable | ( |  | ) | const
| inlineinherited

Returns the parent layerable of this layerable. The parent layerable is used to provide visibility hierarchies in conjunction with the method realVisibility. This way, layerables only get drawn if their parent layerables are visible, too.

Note that a parent layerable is not necessarily also the QObject parent for memory management. Further, a layerable doesn't always have a parent layerable, so this function may return 0.

A parent layerable is set implicitly with when placed inside layout elements and doesn't need to be set manually by the user.

void QCPLayerable::setVisible | ( | bool | on | ) |
| inherited

Sets the visibility of this layerable object. If an object is not visible, it will not be drawn on the QCustomPlot surface, and user interaction with it (e.g. click and selection) is not possible.

bool QCPLayerable::setLayer | ( | QCPLayer * | layer | ) |
| inherited

Sets the layer of this layerable object. The object will be placed on top of the other objects already on layer.

Returns true on success, i.e. if layer is a valid layer.

bool QCPLayerable::setLayer | ( | const QString & | layerName | ) |
| inherited

This is an overloaded function.

Sets the layer of this layerable object by name

Returns true on success, i.e. if layerName is a valid layer name.

void QCPLayerable::setAntialiased | ( | bool | enabled | ) |
| inherited

Sets whether this object will be drawn antialiased or not.

Note that antialiasing settings may be overridden by QCustomPlot::setAntialiasedElements and QCustomPlot::setNotAntialiasedElements.

bool QCPLayerable::realVisibility | ( |  | ) | const
| inherited

Returns whether this layerable is visible, taking possible direct layerable parent visibility into account. This is the method that is consulted to decide whether a layerable shall be drawn or not.

If this layerable has a direct layerable parent (usually set via hierarchies implemented in subclasses, like in the case of QCPLayoutElement), this function returns true only if this layerable has its visibility set to true and the parent layerable's realVisibility returns true.

If this layerable doesn't have a direct layerable parent, returns the state of this layerable's visibility.

QCP::Interaction QCPLayerable::selectionCategory | ( |  | ) | const
| protectedvirtualinherited

Returns the selection category this layerable shall belong to. The selection category is used in conjunction with QCustomPlot::setInteractions to control which objects are selectable and which aren't.

Subclasses that don't fit any of the normal QCP::Interaction values can use QCP::iSelectOther. This is what the default implementation returns.

See Also
  QCustomPlot::setInteractions

Reimplemented in QCPAxis, QCPLegend, QCPAbstractItem, QCPAbstractPlottable, and QCPAbstractLegendItem.

QRect QCPLayerable::clipRect | ( |  | ) | const
| protectedvirtualinherited

Returns the clipping rectangle of this layerable object. By default, this is the viewport of the parent QCustomPlot. Specific subclasses may reimplement this function to provide different clipping rects.

The returned clipping rect is set on the painter before the draw function of the respective object is called.

Reimplemented in QCPAbstractItem, QCPAbstractPlottable, and QCPAbstractLegendItem.

void QCPLayerable::selectEvent | ( | QMouseEvent * | event,
|  | bool | additive,
|  | const QVariant & | details,
|  | bool * | selectionStateChanged
| ) |  |
| protectedvirtualinherited

This event is called when the layerable shall be selected, as a consequence of a click by the user. Subclasses should react to it by setting their selection state appropriately. The default implementation does nothing.

event is the mouse event that caused the selection. additive indicates, whether the user was holding the multi-select-modifier while performing the selection (see QCustomPlot::setMultiSelectModifier). if additive is true, the selection state must be toggled (i.e. become selected when unselected and unselected when selected).

Every selectEvent is preceded by a call to selectTest, which has returned positively (i.e. returned a value greater than 0 and less than the selection tolerance of the parent QCustomPlot). The details data you output from selectTest is feeded back via details here. You may use it to transport any kind of information from the selectTest to the possibly subsequent selectEvent. Usually details is used to transfer which part was clicked, if it is a layerable that has multiple individually selectable parts (like QCPAxis). This way selectEvent doesn't need to do the calculation again to find out which part was actually clicked.

selectionStateChanged is an output parameter. If the pointer is non-null, this function must set the value either to true or false, depending on whether the selection state of this layerable was actually changed. For layerables that only are selectable as a whole and not in parts, this is simple: if additive is true, selectionStateChanged must also be set to true, because the selection toggles. If additive is false, selectionStateChanged is only set to true, if the layerable was previously unselected and now is switched to the selected state.

See Also
  selectTest, deselectEvent

Reimplemented in QCPAxis, QCPLegend, QCPAbstractItem, QCPAbstractPlottable, QCPPlotTitle, and QCPAbstractLegendItem.

void QCPLayerable::deselectEvent | ( | bool * | selectionStateChanged | ) |
| protectedvirtualinherited

This event is called when the layerable shall be deselected, either as consequence of a user interaction or a call to QCustomPlot::deselectAll. Subclasses should react to it by unsetting their selection appropriately.

just as in selectEvent, the output parameter selectionStateChanged (if non-null), must return true or false when the selection state of this layerable has changed or not changed, respectively.

See Also
  selectTest, selectEvent

Reimplemented in QCPAxis, QCPLegend, QCPAbstractItem, QCPAbstractPlottable, QCPPlotTitle, and QCPAbstractLegendItem.

void QCPLayerable::initializeParentPlot | ( | QCustomPlot * | parentPlot | ) |
| protectedinherited

Sets the parent plot of this layerable. Use this function once to set the parent plot if you have passed 0 in the constructor. It can not be used to move a layerable from one QCustomPlot to another one.

Note that, unlike when passing a non-null parent plot in the constructor, this function does not make parentPlot the QObject-parent of this layerable. If you want this, call QObject::setParent(parentPlot) in addition to this function.

Further, you will probably want to set a layer (setLayer) after calling this function, to make the layerable appear on the QCustomPlot.

The parent plot change will be propagated to subclasses via a call to parentPlotInitialized so they can react accordingly (e.g. also initialize the parent plot of child layerables, like QCPLayout does).

void QCPLayerable::setParentLayerable | ( | QCPLayerable * | parentLayerable | ) |
| protectedinherited

Sets the parent layerable of this layerable to parentLayerable. Note that parentLayerable does not become the QObject-parent (for memory management) of this layerable.

The parent layerable has influence on the return value of the realVisibility method. Only layerables with a fully visible parent tree will return true for realVisibility, and thus be drawn.

See Also
  realVisibility

bool QCPLayerable::moveToLayer | ( | QCPLayer * | layer,
|  | bool | prepend
| ) |  |
| protectedinherited

Moves this layerable object to layer. If prepend is true, this object will be prepended to the new layer's list, i.e. it will be drawn below the objects already on the layer. If it is false, the object will be appended.

Returns true on success, i.e. if layer is a valid layer.

void QCPLayerable::applyAntialiasingHint | ( | QCPPainter * | painter,
|  | bool | localAntialiased,
|  | QCP::AntialiasedElement | overrideElement
| ) |  | const
| protectedinherited

Sets the QCPainter::setAntialiasing state on the provided painter, depending on the localAntialiased value as well as the overrides QCustomPlot::setAntialiasedElements and QCustomPlot::setNotAntialiasedElements. Which override enum this function takes into account is controlled via overrideElement.

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

- src/layoutelements/layoutelement-axisrect.h
- src/layoutelements/layoutelement-axisrect.cpp

Generated with Doxygen 1.8.1.2