Vespucci  1.0.0
QCPItemPosition Class Reference

Manages the position of an item. More...

#include <qcustomplot.h>

Inheritance diagram for QCPItemPosition:
QCPItemAnchor

Public Types

enum  PositionType { ptAbsolute, ptViewportRatio, ptAxisRectRatio, ptPlotCoords }
 

Public Member Functions

 QCPItemPosition (QCustomPlot *parentPlot, QCPAbstractItem *parentItem, const QString name)
 
virtual ~QCPItemPosition ()
 
PositionType type () const
 
PositionType typeX () const
 
PositionType typeY () const
 
QCPItemAnchorparentAnchor () const
 
QCPItemAnchorparentAnchorX () const
 
QCPItemAnchorparentAnchorY () const
 
double key () const
 
double value () const
 
QPointF coords () const
 
QCPAxiskeyAxis () const
 
QCPAxisvalueAxis () const
 
QCPAxisRectaxisRect () const
 
virtual QPointF pixelPoint () const
 
void setType (PositionType type)
 
void setTypeX (PositionType type)
 
void setTypeY (PositionType type)
 
bool setParentAnchor (QCPItemAnchor *parentAnchor, bool keepPixelPosition=false)
 
bool setParentAnchorX (QCPItemAnchor *parentAnchor, bool keepPixelPosition=false)
 
bool setParentAnchorY (QCPItemAnchor *parentAnchor, bool keepPixelPosition=false)
 
void setCoords (double key, double value)
 
void setCoords (const QPointF &coords)
 
void setAxes (QCPAxis *keyAxis, QCPAxis *valueAxis)
 
void setAxisRect (QCPAxisRect *axisRect)
 
void setPixelPoint (const QPointF &pixelPoint)
 
- Public Member Functions inherited from QCPItemAnchor
 QCPItemAnchor (QCustomPlot *parentPlot, QCPAbstractItem *parentItem, const QString name, int anchorId=-1)
 
virtual ~QCPItemAnchor ()
 
QString name () const
 

Protected Member Functions

virtual QCPItemPositiontoQCPItemPosition ()
 
- Protected Member Functions inherited from QCPItemAnchor
void addChildX (QCPItemPosition *pos)
 
void removeChildX (QCPItemPosition *pos)
 
void addChildY (QCPItemPosition *pos)
 
void removeChildY (QCPItemPosition *pos)
 

Protected Attributes

PositionType mPositionTypeX
 
PositionType mPositionTypeY
 
QPointer< QCPAxismKeyAxis
 
QPointer< QCPAxismValueAxis
 
QPointer< QCPAxisRectmAxisRect
 
double mKey
 
double mValue
 
QCPItemAnchormParentAnchorX
 
QCPItemAnchormParentAnchorY
 
- Protected Attributes inherited from QCPItemAnchor
QString mName
 
QCustomPlotmParentPlot
 
QCPAbstractItemmParentItem
 
int mAnchorId
 
QSet< QCPItemPosition * > mChildrenX
 
QSet< QCPItemPosition * > mChildrenY
 

Detailed Description

Manages the position of an item.

Every item has at least one public QCPItemPosition member pointer which provides ways to position the item on the QCustomPlot surface. Some items have multiple positions, for example QCPItemRect has two: topLeft and bottomRight.

QCPItemPosition has a type (PositionType) that can be set with setType. This type defines how coordinates passed to setCoords are to be interpreted, e.g. as absolute pixel coordinates, as plot coordinates of certain axes, etc. For more advanced plots it is also possible to assign different types per X/Y coordinate of the position (see setTypeX, setTypeY). This way an item could be positioned at a fixed pixel distance from the top in the Y direction, while following a plot coordinate in the X direction.

A QCPItemPosition may have a parent QCPItemAnchor, see setParentAnchor. This way you can tie multiple items together. If the QCPItemPosition has a parent, its coordinates (setCoords) are considered to be absolute pixels in the reference frame of the parent anchor, where (0, 0) means directly ontop of the parent anchor. For example, You could attach the start position of a QCPItemLine to the bottom anchor of a QCPItemText to make the starting point of the line always be centered under the text label, no matter where the text is moved to. For more advanced plots, it is possible to assign different parent anchors per X/Y coordinate of the position, see setParentAnchorX, setParentAnchorY. This way an item could follow another item in the X direction but stay at a fixed position in the Y direction. Or even follow item A in X, and item B in Y.

Note that every QCPItemPosition inherits from QCPItemAnchor and thus can itself be used as parent anchor for other positions.

To set the apparent pixel position on the QCustomPlot surface directly, use setPixelPoint. This works no matter what type this QCPItemPosition is or what parent-child situation it is in, as setPixelPoint transforms the coordinates appropriately, to make the position appear at the specified pixel values.

Definition at line 1545 of file qcustomplot.h.

Member Enumeration Documentation

Defines the ways an item position can be specified. Thus it defines what the numbers passed to setCoords actually mean.

See also
setType
Enumerator
ptAbsolute 

Static positioning in pixels, starting from the top left corner of the viewport/widget.

ptViewportRatio 

Static positioning given by a fraction of the viewport size. For example, if you call setCoords(0, 0), the position will be at the top left corner of the viewport/widget. setCoords(1, 1) will be at the bottom right corner, setCoords(0.5, 0) will be horizontally centered and vertically at the top of the viewport/widget, etc.

ptAxisRectRatio 

Static positioning given by a fraction of the axis rect size (see setAxisRect). For example, if you call setCoords(0, 0), the position will be at the top left corner of the axis rect. setCoords(1, 1) will be at the bottom right corner, setCoords(0.5, 0) will be horizontally centered and vertically at the top of the axis rect, etc. You can also go beyond the axis rect by providing negative coordinates or coordinates larger than 1.

ptPlotCoords 

Dynamic positioning at a plot coordinate defined by two axes (see setAxes).

Definition at line 1554 of file qcustomplot.h.

Constructor & Destructor Documentation

QCPItemPosition::QCPItemPosition ( QCustomPlot parentPlot,
QCPAbstractItem parentItem,
const QString  name 
)

Creates a new QCPItemPosition. You shouldn't create QCPItemPosition instances directly, even if you want to make a new item subclass. Use QCPAbstractItem::createPosition instead, as explained in the subclassing section of the QCPAbstractItem documentation.

Definition at line 7631 of file qcustomplot.cpp.

QCPItemPosition::~QCPItemPosition ( )
virtual

Definition at line 7642 of file qcustomplot.cpp.

Member Function Documentation

QCPAxisRect * QCPItemPosition::axisRect ( ) const

Definition at line 7665 of file qcustomplot.cpp.

QPointF QCPItemPosition::coords ( ) const
inline

Definition at line 1576 of file qcustomplot.h.

double QCPItemPosition::key ( ) const
inline

Definition at line 1574 of file qcustomplot.h.

QCPAxis* QCPItemPosition::keyAxis ( ) const
inline

Definition at line 1577 of file qcustomplot.h.

QCPItemAnchor * QCPItemPosition::parentAnchor ( ) const
inline

Returns the current parent anchor.

If different parent anchors were set for X and Y (setParentAnchorX, setParentAnchorY), this method returns the parent anchor of the Y coordinate. In that case rather use parentAnchorX() and parentAnchorY().

See also
setParentAnchor

Definition at line 1571 of file qcustomplot.h.

QCPItemAnchor* QCPItemPosition::parentAnchorX ( ) const
inline

Definition at line 1572 of file qcustomplot.h.

QCPItemAnchor* QCPItemPosition::parentAnchorY ( ) const
inline

Definition at line 1573 of file qcustomplot.h.

QPointF QCPItemPosition::pixelPoint ( ) const
virtual

Returns the final absolute pixel position of the QCPItemPosition on the QCustomPlot surface. It includes all effects of type (setType) and possible parent anchors (setParentAnchor).

See also
setPixelPoint

Reimplemented from QCPItemAnchor.

Definition at line 7955 of file qcustomplot.cpp.

void QCPItemPosition::setAxes ( QCPAxis keyAxis,
QCPAxis valueAxis 
)

When setType is ptPlotCoords, this function may be used to specify the axes the coordinates set with setCoords relate to. By default they are set to the initial xAxis and yAxis of the QCustomPlot.

Definition at line 8055 of file qcustomplot.cpp.

void QCPItemPosition::setAxisRect ( QCPAxisRect axisRect)

When setType is ptAxisRectRatio, this function may be used to specify the axis rect the coordinates set with setCoords relate to. By default this is set to the main axis rect of the QCustomPlot.

Definition at line 8066 of file qcustomplot.cpp.

void QCPItemPosition::setCoords ( double  key,
double  value 
)

Sets the coordinates of this QCPItemPosition. What the coordinates mean, is defined by the type (setType, setTypeX, setTypeY).

For example, if the type is ptAbsolute, key and value mean the x and y pixel position on the QCustomPlot surface. In that case the origin (0, 0) is in the top left corner of the QCustomPlot viewport. If the type is ptPlotCoords, key and value mean a point in the plot coordinate system defined by the axes set by setAxes. By default those are the QCustomPlot's xAxis and yAxis. See the documentation of setType for other available coordinate types and their meaning.

If different types were configured for X and Y (setTypeX, setTypeY), key and value must also be provided in the different coordinate systems. Here, the X type refers to key, and the Y type refers to value.

See also
setPixelPoint

Definition at line 7933 of file qcustomplot.cpp.

void QCPItemPosition::setCoords ( const QPointF &  pos)

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Sets the coordinates as a QPointF pos where pos.x has the meaning of key and pos.y the meaning of value of the setCoords(double key, double value) method.

Definition at line 7944 of file qcustomplot.cpp.

bool QCPItemPosition::setParentAnchor ( QCPItemAnchor parentAnchor,
bool  keepPixelPosition = false 
)

Sets the parent of this QCPItemPosition to parentAnchor. This means the position will now follow any position changes of the anchor. The local coordinate system of positions with a parent anchor always is absolute pixels, with (0, 0) being exactly on top of the parent anchor. (Hence the type shouldn't be set to ptPlotCoords for positions with parent anchors.)

if keepPixelPosition is true, the current pixel position of the QCPItemPosition is preserved during reparenting. If it's set to false, the coordinates are set to (0, 0), i.e. the position will be exactly on top of the parent anchor.

To remove this QCPItemPosition from any parent anchor, set parentAnchor to 0.

If the QCPItemPosition previously had no parent and the type is ptPlotCoords, the type is set to ptAbsolute, to keep the position in a valid state.

This method sets the parent anchor for both X and Y directions. It is also possible to set different parents for X and Y, see setParentAnchorX, setParentAnchorY.

Definition at line 7779 of file qcustomplot.cpp.

bool QCPItemPosition::setParentAnchorX ( QCPItemAnchor parentAnchor,
bool  keepPixelPosition = false 
)

This method sets the parent anchor of the X coordinate to parentAnchor.

For a detailed description of what a parent anchor is, see the documentation of setParentAnchor.

See also
setParentAnchor, setParentAnchorY

Definition at line 7793 of file qcustomplot.cpp.

bool QCPItemPosition::setParentAnchorY ( QCPItemAnchor parentAnchor,
bool  keepPixelPosition = false 
)

This method sets the parent anchor of the Y coordinate to parentAnchor.

For a detailed description of what a parent anchor is, see the documentation of setParentAnchor.

See also
setParentAnchor, setParentAnchorX

Definition at line 7858 of file qcustomplot.cpp.

void QCPItemPosition::setPixelPoint ( const QPointF &  pixelPoint)

Sets the apparent pixel position. This works no matter what type (setType) this QCPItemPosition is or what parent-child situation it is in, as coordinates are transformed appropriately, to make the position finally appear at the specified pixel values.

Only if the type is ptAbsolute and no parent anchor is set, this function's effect is identical to that of setCoords.

See also
pixelPoint, setCoords

Definition at line 8081 of file qcustomplot.cpp.

void QCPItemPosition::setType ( QCPItemPosition::PositionType  type)

Sets the type of the position. The type defines how the coordinates passed to setCoords should be handled and how the QCPItemPosition should behave in the plot.

The possible values for type can be separated in two main categories:

  • The position is regarded as a point in plot coordinates. This corresponds to ptPlotCoords and requires two axes that define the plot coordinate system. They can be specified with setAxes. By default, the QCustomPlot's x- and yAxis are used.

Note that the position type ptPlotCoords is only available (and sensible) when the position has no parent anchor (setParentAnchor).

If the type is changed, the apparent pixel position on the plot is preserved. This means the coordinates as retrieved with coords() and set with setCoords may change in the process.

This method sets the type for both X and Y directions. It is also possible to set different types for X and Y, see setTypeX, setTypeY.

Definition at line 7695 of file qcustomplot.cpp.

void QCPItemPosition::setTypeX ( QCPItemPosition::PositionType  type)

This method sets the position type of the X coordinate to type.

For a detailed description of what a position type is, see the documentation of setType.

See also
setType, setTypeY

Definition at line 7708 of file qcustomplot.cpp.

void QCPItemPosition::setTypeY ( QCPItemPosition::PositionType  type)

This method sets the position type of the Y coordinate to type.

For a detailed description of what a position type is, see the documentation of setType.

See also
setType, setTypeX

Definition at line 7738 of file qcustomplot.cpp.

virtual QCPItemPosition* QCPItemPosition::toQCPItemPosition ( )
inlineprotectedvirtual

Returns 0 if this instance is merely a QCPItemAnchor, and a valid pointer of type QCPItemPosition* if it actually is a QCPItemPosition (which is a subclass of QCPItemAnchor).

This safe downcast functionality could also be achieved with a dynamic_cast. However, QCustomPlot avoids dynamic_cast to work with projects that don't have RTTI support enabled (e.g. -fno-rtti flag with gcc compiler).

Reimplemented from QCPItemAnchor.

Definition at line 1604 of file qcustomplot.h.

QCPItemPosition::PositionType * QCPItemPosition::type ( ) const
inline

Returns the current position type.

If different types were set for X and Y (setTypeX, setTypeY), this method returns the type of the X coordinate. In that case rather use typeX() and typeY().

See also
setType

Definition at line 1568 of file qcustomplot.h.

PositionType QCPItemPosition::typeX ( ) const
inline

Definition at line 1569 of file qcustomplot.h.

PositionType QCPItemPosition::typeY ( ) const
inline

Definition at line 1570 of file qcustomplot.h.

double QCPItemPosition::value ( ) const
inline

Definition at line 1575 of file qcustomplot.h.

QCPAxis* QCPItemPosition::valueAxis ( ) const
inline

Definition at line 1578 of file qcustomplot.h.

Member Data Documentation

QPointer<QCPAxisRect> QCPItemPosition::mAxisRect
protected

Definition at line 1599 of file qcustomplot.h.

double QCPItemPosition::mKey
protected

Definition at line 1600 of file qcustomplot.h.

QPointer<QCPAxis> QCPItemPosition::mKeyAxis
protected

Definition at line 1598 of file qcustomplot.h.

QCPItemAnchor* QCPItemPosition::mParentAnchorX
protected

Definition at line 1601 of file qcustomplot.h.

QCPItemAnchor * QCPItemPosition::mParentAnchorY
protected

Definition at line 1601 of file qcustomplot.h.

PositionType QCPItemPosition::mPositionTypeX
protected

Definition at line 1597 of file qcustomplot.h.

PositionType QCPItemPosition::mPositionTypeY
protected

Definition at line 1597 of file qcustomplot.h.

double QCPItemPosition::mValue
protected

Definition at line 1600 of file qcustomplot.h.

QPointer<QCPAxis> QCPItemPosition::mValueAxis
protected

Definition at line 1598 of file qcustomplot.h.


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