QCPLayoutInset Class Reference

· · ·
Public Types | Public Functions | Protected Functions
QCPLayoutInset Class Reference

A layout that places child elements aligned to the border or arbitrarily positioned. More...

Inheritance diagram for QCPLayoutInset:

## Public Types
enum | InsetPlacement

## Public Functions
| QCPLayoutInset ()
InsetPlacement | insetPlacement (int index) const
Qt::Alignment | insetAlignment (int index) const
QRectF | insetRect (int index) const
void | setInsetPlacement (int index, InsetPlacement placement)
void | setInsetAlignment (int index, Qt::Alignment alignment)
void | setInsetRect (int index, const QRectF &rect)
virtual void | updateLayout ()
virtual int | elementCount () const
virtual QCPLayoutElement * | elementAt (int index) const
virtual QCPLayoutElement * | takeAt (int index)
virtual bool | take (QCPLayoutElement *element)
virtual void | simplify ()
virtual double | selectTest (const QPointF &pos, bool onlySelectable, QVariant *details=0) const
void | addElement (QCPLayoutElement *element, Qt::Alignment alignment)
void | addElement (QCPLayoutElement *element, const QRectF &rect)
virtual void | update ()
virtual QList< QCPLayoutElement * > | elements (bool recursive) const
bool | removeAt (int index)
bool | remove (QCPLayoutElement *element)
void | clear ()
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
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
void | sizeConstraintsChanged () const
void | adoptElement (QCPLayoutElement *el)
void | releaseElement (QCPLayoutElement *el)
QVector< int > | getSectionSizes (QVector< int > maxSizes, QVector< int > minSizes, QVector< double > stretchFactors, int totalSize) const
virtual int | calculateAutoMargin (QCP::MarginSide side)
virtual void | mousePressEvent (QMouseEvent *event)
virtual void | mouseMoveEvent (QMouseEvent *event)
virtual void | mouseReleaseEvent (QMouseEvent *event)
virtual void | mouseDoubleClickEvent (QMouseEvent *event)
virtual void | wheelEvent (QWheelEvent *event)
virtual void | applyDefaultAntialiasingHint (QCPPainter *painter) const
virtual void | draw (QCPPainter *painter)
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

A layout that places child elements aligned to the border or arbitrarily positioned.

Elements are placed either aligned to the border or at arbitrary position in the area of the layout. Which placement applies is controlled with the InsetPlacement (setInsetPlacement).

Elements are added via addElement(QCPLayoutElement *element, Qt::Alignment alignment) or addElement(QCPLayoutElement *element, const QRectF &rect). If the first method is used, the inset placement will default to ipBorderAligned and the element will be aligned according to the alignment parameter. The second method defaults to ipFree and allows placing elements at arbitrary position and size, defined by rect.

The alignment or rect can be set via setInsetAlignment or setInsetRect, respectively.

This is the layout that every QCPAxisRect has as QCPAxisRect::insetLayout.

## Member Enumeration Documentation

enum QCPLayoutInset::InsetPlacement

Defines how the placement and sizing is handled for a certain element in a QCPLayoutInset.

Enumerator:

  ipFree | The element may be positioned/sized arbitrarily, see setInsetRect.
  ipBorderAligned | The element is aligned to one of the layout sides, see setInsetAlignment.

## Constructor & Destructor Documentation

QCPLayoutInset::QCPLayoutInset | ( |  | ) |
| explicit

Creates an instance of QCPLayoutInset and sets default values.

## Member Function Documentation

QCPLayoutInset::InsetPlacement QCPLayoutInset::insetPlacement | ( | int | index | ) | const

Returns the placement type of the element with the specified index.

Qt::Alignment QCPLayoutInset::insetAlignment | ( | int | index | ) | const

Returns the alignment of the element with the specified index. The alignment only has a meaning, if the inset placement (setInsetPlacement) is ipBorderAligned.

QRectF QCPLayoutInset::insetRect | ( | int | index | ) | const

Returns the rect of the element with the specified index. The rect only has a meaning, if the inset placement (setInsetPlacement) is ipFree.

void QCPLayoutInset::setInsetPlacement | ( | int | index,
|  | QCPLayoutInset::InsetPlacement | placement
| ) |  |

Sets the inset placement type of the element with the specified index to placement.

See Also
  InsetPlacement

void QCPLayoutInset::setInsetAlignment | ( | int | index,
|  | Qt::Alignment | alignment
| ) |  |

If the inset placement (setInsetPlacement) is ipBorderAligned, this function is used to set the alignment of the element with the specified index to alignment.

alignment is an or combination of the following alignment flags: Qt::AlignLeft, Qt::AlignHCenter, Qt::AlighRight, Qt::AlignTop, Qt::AlignVCenter, Qt::AlignBottom. Any other alignment flags will be ignored.

void QCPLayoutInset::setInsetRect | ( | int | index,
|  | const QRectF & | rect
| ) |  |

If the inset placement (setInsetPlacement) is ipFree, this function is used to set the position and size of the element with the specified index to rect.

rect is given in fractions of the whole inset layout rect. So an inset with rect (0, 0, 1, 1) will span the entire layout. An inset with rect (0.6, 0.1, 0.35, 0.35) will be in the top right corner of the layout, with 35% width and height of the parent layout.

Note that the minimum and maximum sizes of the embedded element (QCPLayoutElement::setMinimumSize, QCPLayoutElement::setMaximumSize) are enforced.

void QCPLayoutInset::updateLayout | ( |  | ) |
| virtual

Subclasses reimplement this method to update the position and sizes of the child elements/cells via calling their QCPLayoutElement::setOuterRect. The default implementation does nothing.

The geometry used as a reference is the inner rect of this layout. Child elements should stay within that rect.

getSectionSizes may help with the reimplementation of this function.

See Also
  update

Reimplemented from QCPLayout.

int QCPLayoutInset::elementCount | ( |  | ) | const
| virtual

Returns the number of elements/cells in the layout.

See Also
  elements, elementAt

Implements QCPLayout.

QCPLayoutElement * QCPLayoutInset::elementAt | ( | int | index | ) | const
| virtual

Returns the element in the cell with the given index. If index is invalid, returns 0.

Note that even if index is valid, the respective cell may be empty in some layouts (e.g. QCPLayoutGrid), so this function may return 0 in those cases. You may use this function to check whether a cell is empty or not.

See Also
  elements, elementCount, takeAt

Implements QCPLayout.

QCPLayoutElement * QCPLayoutInset::takeAt | ( | int | index | ) |
| virtual

Removes the element with the given index from the layout and returns it.

If the index is invalid or the cell with that index is empty, returns 0.

Note that some layouts don't remove the respective cell right away but leave an empty cell after successful removal of the layout element. To collapse empty cells, use simplify.

See Also
  elementAt, take

Implements QCPLayout.

bool QCPLayoutInset::take | ( | QCPLayoutElement * | element | ) |
| virtual

Removes the specified element from the layout and returns true on success.

If the element isn't in this layout, returns false.

Note that some layouts don't remove the respective cell right away but leave an empty cell after successful removal of the layout element. To collapse empty cells, use simplify.

See Also
  takeAt

Implements QCPLayout.

void QCPLayoutInset::simplify | ( |  | ) |
| inlinevirtual

The QCPInsetLayout does not need simplification since it can never have empty cells due to its linear index structure. This method does nothing.

Reimplemented from QCPLayout.

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

The inset layout is sensitive to events only at areas where its child elements are sensitive. If the selectTest method of any of the child elements returns a positive number for pos, this method returns a value corresponding to 0.99 times the parent plot's selection tolerance. The inset layout is not selectable itself by default. So if onlySelectable is true, -1.0 is returned.

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

Reimplemented from QCPLayoutElement.

void QCPLayoutInset::addElement | ( | QCPLayoutElement * | element,
|  | Qt::Alignment | alignment
| ) |  |

Adds the specified element to the layout as an inset aligned at the border (setInsetAlignment is initialized with ipBorderAligned). The alignment is set to alignment.

alignment is an or combination of the following alignment flags: Qt::AlignLeft, Qt::AlignHCenter, Qt::AlighRight, Qt::AlignTop, Qt::AlignVCenter, Qt::AlignBottom. Any other alignment flags will be ignored.

See Also
  addElement(QCPLayoutElement *element, const QRectF &rect)

void QCPLayoutInset::addElement | ( | QCPLayoutElement * | element,
|  | const QRectF & | rect
| ) |  |

Adds the specified element to the layout as an inset with free positioning/sizing (setInsetAlignment is initialized with ipFree). The position and size is set to rect.

rect is given in fractions of the whole inset layout rect. So an inset with rect (0, 0, 1, 1) will span the entire layout. An inset with rect (0.6, 0.1, 0.35, 0.35) will be in the top right corner of the layout, with 35% width and height of the parent layout.

See Also
  addElement(QCPLayoutElement *element, Qt::Alignment alignment)

void QCPLayout::update | ( |  | ) |
| virtualinherited

First calls the QCPLayoutElement::update base class implementation to update the margins on this layout.

Then calls updateLayout which subclasses reimplement to reposition and resize their cells.

Finally, update is called on all child elements.

Reimplemented from QCPLayoutElement.

QList< QCPLayoutElement * > QCPLayout::elements | ( | bool | recursive | ) | const
| virtualinherited

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.

Reimplemented in QCPLayoutGrid.

bool QCPLayout::removeAt | ( | int | index | ) |
| inherited

Removes and deletes the element at the provided index. Returns true on success. If index is invalid or points to an empty cell, returns false.

This function internally uses takeAt to remove the element from the layout and then deletes the returned element.

See Also
  remove, takeAt

bool QCPLayout::remove | ( | QCPLayoutElement * | element | ) |
| inherited

Removes and deletes the provided element. Returns true on success. If element is not in the layout, returns false.

This function internally uses takeAt to remove the element from the layout and then deletes the element.

See Also
  removeAt, take

void QCPLayout::clear | ( |  | ) |
| inherited

Removes and deletes all layout elements in this layout.

See Also
  remove, removeAt

void QCPLayout::sizeConstraintsChanged | ( |  | ) | const
| protectedinherited

Subclasses call this method to report changed (minimum/maximum) size constraints.

If the parent of this layout is again a QCPLayout, forwards the call to the parent's sizeConstraintsChanged. If the parent is a QWidget (i.e. is the QCustomPlot::plotLayout of QCustomPlot), calls QWidget::updateGeometry, so if the QCustomPlot widget is inside a Qt QLayout, it may update itself and resize cells accordingly.

void QCPLayout::adoptElement | ( | QCPLayoutElement * | el | ) |
| protectedinherited

Associates el with this layout. This is done by setting the QCPLayoutElement::layout, the QCPLayerable::parentLayerable and the QObject parent to this layout.

Further, if el didn't previously have a parent plot, calls QCPLayerable::initializeParentPlot on el to set the paret plot.

This method is used by subclass specific methods that add elements to the layout. Note that this method only changes properties in el. The removal from the old layout and the insertion into the new layout must be done additionally.

void QCPLayout::releaseElement | ( | QCPLayoutElement * | el | ) |
| protectedinherited

Disassociates el from this layout. This is done by setting the QCPLayoutElement::layout and the QCPLayerable::parentLayerable to zero. The QObject parent is set to the parent QCustomPlot.

This method is used by subclass specific methods that remove elements from the layout (e.g. take or takeAt). Note that this method only changes properties in el. The removal from the old layout must be done additionally.

QVector< int > QCPLayout::getSectionSizes | ( | QVector< int > | maxSizes,
|  | QVector< int > | minSizes,
|  | QVector< double > | stretchFactors,
|  | int | totalSize
| ) |  | const
| protectedinherited

This is a helper function for the implementation of updateLayout in subclasses.

It calculates the sizes of one-dimensional sections with provided constraints on maximum section sizes, minimum section sizes, relative stretch factors and the final total size of all sections.

The QVector entries refer to the sections. Thus all QVectors must have the same size.

maxSizes gives the maximum allowed size of each section. If there shall be no maximum size imposed, set all vector values to Qt's QWIDGETSIZE_MAX.

minSizes gives the minimum allowed size of each section. If there shall be no minimum size imposed, set all vector values to zero. If the minSizes entries add up to a value greater than totalSize, sections will be scaled smaller than the proposed minimum sizes. (In other words, not exceeding the allowed total size is taken to be more important than not going below minimum section sizes.)

stretchFactors give the relative proportions of the sections to each other. If all sections shall be scaled equally, set all values equal. If the first section shall be double the size of each individual other section, set the first number of stretchFactors to double the value of the other individual values (e.g. {2, 1, 1, 1}).

totalSize is the value that the final section sizes will add up to. Due to rounding, the actual sum may differ slightly. If you want the section sizes to sum up to exactly that value, you could distribute the remaining difference on the sections.

The return value is a QVector containing the section sizes.

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.

int QCPLayoutElement::calculateAutoMargin | ( | QCP::MarginSide | side | ) |
| protectedvirtualinherited

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 in QCPAxisRect.

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

This event is called, if the mouse was pressed while being inside the outer rect of this layout element.

Reimplemented in QCPAxisRect.

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

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

Reimplemented in QCPAxisRect.

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

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

Reimplemented in QCPAxisRect.

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::wheelEvent | ( | QWheelEvent * | event | ) |
| inlineprotectedvirtualinherited

This event is called, if the mouse wheel is scrolled while the cursor is inside the rect of this layout element.

Reimplemented in QCPAxisRect.

virtual void QCPLayoutElement::applyDefaultAntialiasingHint | ( | QCPPainter * | painter | ) | const
| inlineprotectedvirtualinherited

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.

Implements QCPLayerable.

Reimplemented in QCPLegend, QCPAxisRect, QCPAbstractLegendItem, and QCPPlotTitle.

virtual void QCPLayoutElement::draw | ( | QCPPainter * | painter | ) |
| inlineprotectedvirtualinherited

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.

Implements QCPLayerable.

Reimplemented in QCPLegend, QCPAxisRect, QCPPlottableLegendItem, QCPAbstractLegendItem, and QCPPlotTitle.

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/layout.h
- src/layout.cpp

Generated with Doxygen 1.8.1.2