Main Page · Class Overview · Hierarchy · All Classes · Special Pages
Public Functions | Protected Functions
QCPMarginGroup Class Reference

A margin group allows synchronization of margin sides if working with multiple layout elements. More...

Inherits QObject.

Public Functions

 QCPMarginGroup (QCustomPlot *parentPlot)
 
QList< QCPLayoutElement * > elements (QCP::MarginSide side) const
 
bool isEmpty () const
 
void clear ()
 

Protected Functions

int commonMargin (QCP::MarginSide side) const
 
void addChild (QCP::MarginSide side, QCPLayoutElement *element)
 
void removeChild (QCP::MarginSide side, QCPLayoutElement *element)
 

Detailed Description

A margin group allows synchronization of margin sides if working with multiple layout elements.

QCPMarginGroup allows you to tie a margin side of two or more layout elements together, such that they will all have the same size, based on the largest required margin in the group.


QCPMarginGroup.png
Demonstration of QCPMarginGroup


In certain situations it is desirable that margins at specific sides are synchronized across layout elements. For example, if one QCPAxisRect is below another one in a grid layout, it will provide a cleaner look to the user if the left and right margins of the two axis rects are of the same size. The left axis of the top axis rect will then be at the same horizontal position as the left axis of the lower axis rect, making them appear aligned. The same applies for the right axes. This is what QCPMarginGroup makes possible.

To add/remove a specific side of a layout element to/from a margin group, use the QCPLayoutElement::setMarginGroup method. To completely break apart the margin group, either call clear, or just delete the margin group.

Example

First create a margin group:

QCPMarginGroup *group = new QCPMarginGroup(customPlot);

Then set this group on the layout element sides:

customPlot->axisRect(0)->setMarginGroup(QCP::msLeft|QCP::msRight, group);
customPlot->axisRect(1)->setMarginGroup(QCP::msLeft|QCP::msRight, group);

Here, we've used the first two axis rects of the plot and synchronized their left margins with each other and their right margins with each other.

Constructor & Destructor Documentation

QCPMarginGroup::QCPMarginGroup ( QCustomPlot parentPlot)

Creates a new QCPMarginGroup instance in parentPlot.

Member Function Documentation

QList< QCPLayoutElement * > QCPMarginGroup::elements ( QCP::MarginSide  side) const
inline

Returns a list of all layout elements that have their margin side associated with this margin group.

bool QCPMarginGroup::isEmpty ( ) const

Returns whether this margin group is empty. If this function returns true, no layout elements use this margin group to synchronize margin sides.

void QCPMarginGroup::clear ( )

Clears this margin group. The synchronization of the margin sides that use this margin group is lifted and they will use their individual margin sizes again.

int QCPMarginGroup::commonMargin ( QCP::MarginSide  side) const
protected

Returns the synchronized common margin for side. This is the margin value that will be used by the layout element on the respective side, if it is part of this margin group.

The common margin is calculated by requesting the automatic margin (QCPLayoutElement::calculateAutoMargin) of each element associated with side in this margin group, and choosing the largest returned value. (QCPLayoutElement::minimumMargins is taken into account, too.)

void QCPMarginGroup::addChild ( QCP::MarginSide  side,
QCPLayoutElement element 
)
protected

Adds element to the internal list of child elements, for the margin side.

This function does not modify the margin group property of element.

void QCPMarginGroup::removeChild ( QCP::MarginSide  side,
QCPLayoutElement element 
)
protected

Removes element from the internal list of child elements, for the margin side.

This function does not modify the margin group property of element.


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