Main Page · Class Overview · Hierarchy · All Classes · Special Pages
Public Types | Public Functions | Signals | Protected Functions
QCPLegend Class Reference

Manages a legend inside a QCustomPlot. More...

Inheritance diagram for QCPLegend:
Inheritance graph

Public Types

enum   SelectablePart
 
- Public Types inherited from QCPLayoutGrid
enum   FillOrder
 
- Public Types inherited from QCPLayoutElement
enum   UpdatePhase
 
 

Public Functions

  QCPLegend ()
 
QPen  borderPen () const
 
QBrush  brush () const
 
QFont  font () const
 
QColor  textColor () const
 
QSize  iconSize () const
 
int  iconTextPadding () const
 
QPen  iconBorderPen () const
 
SelectableParts  selectableParts () const
 
SelectableParts  selectedParts () const
 
QPen  selectedBorderPen () const
 
QPen  selectedIconBorderPen () const
 
QBrush  selectedBrush () const
 
QFont  selectedFont () const
 
QColor  selectedTextColor () const
 
void  setBorderPen (const QPen &pen)
 
void  setBrush (const QBrush &brush)
 
void  setFont (const QFont &font)
 
void  setTextColor (const QColor &color)
 
void  setIconSize (const QSize &size)
 
void  setIconSize (int width, int height)
 
void  setIconTextPadding (int padding)
 
void  setIconBorderPen (const QPen &pen)
 
Q_SLOT void  setSelectableParts (const SelectableParts &selectableParts)
 
Q_SLOT void  setSelectedParts (const SelectableParts &selectedParts)
 
void  setSelectedBorderPen (const QPen &pen)
 
void  setSelectedIconBorderPen (const QPen &pen)
 
void  setSelectedBrush (const QBrush &brush)
 
void  setSelectedFont (const QFont &font)
 
void  setSelectedTextColor (const QColor &color)
 
virtual double  selectTest (const QPointF &pos, bool onlySelectable, QVariant *details=nullptr) const
 
QCPAbstractLegendItemitem (int index) const
 
 
int  itemCount () const
 
 
bool  hasItemWithPlottable (const QCPAbstractPlottable *plottable) const
 
 
bool  removeItem (int index)
 
 
void  clearItems ()
 
QList< QCPAbstractLegendItem * >  selectedItems () const
 
- Public Functions inherited from QCPLayoutGrid
 
int  rowCount () const
 
int  columnCount () const
 
QList< double >  columnStretchFactors () const
 
QList< double >  rowStretchFactors () const
 
int  columnSpacing () const
 
int  rowSpacing () const
 
int  wrap () const
 
FillOrder  fillOrder () const
 
void  setColumnStretchFactor (int column, double factor)
 
void  setColumnStretchFactors (const QList< double > &factors)
 
void  setRowStretchFactor (int row, double factor)
 
void  setRowStretchFactors (const QList< double > &factors)
 
void  setColumnSpacing (int pixels)
 
void  setRowSpacing (int pixels)
 
void  setWrap (int count)
 
void  setFillOrder (FillOrder order, bool rearrange=true)
 
virtual void  updateLayout ()
 
virtual int  elementCount () const
 
virtual QCPLayoutElementelementAt (int index) const
 
virtual QCPLayoutElementtakeAt (int index)
 
virtual bool  take (QCPLayoutElement *element)
 
virtual QList< QCPLayoutElement * >  elements (bool recursive) const
 
virtual void  simplify ()
 
virtual QSize  minimumOuterSizeHint () const
 
virtual QSize  maximumOuterSizeHint () const
 
QCPLayoutElementelement (int row, int column) const
 
bool  addElement (int row, int column, QCPLayoutElement *element)
 
 
bool  hasElement (int row, int column)
 
void  expandTo (int newRowCount, int newColumnCount)
 
void  insertRow (int newIndex)
 
void  insertColumn (int newIndex)
 
int  rowColToIndex (int row, int column) const
 
void  indexToRowCol (int index, int &row, int &column) const
 
- Public Functions inherited from QCPLayout
  QCPLayout ()
 
virtual void  update (UpdatePhase phase)
 
bool  removeAt (int index)
 
bool  remove (QCPLayoutElement *element)
 
void  clear ()
 
- Public Functions inherited from QCPLayoutElement
  QCPLayoutElement (QCustomPlot *parentPlot=nullptr)
 
QCPLayoutlayout () const
 
QRect  rect () const
 
QRect  outerRect () const
 
QMargins  margins () const
 
QMargins  minimumMargins () const
 
QCP::MarginSides  autoMargins () const
 
QSize  minimumSize () const
 
QSize  maximumSize () const
 
SizeConstraintRect  sizeConstraintRect () const
 
QCPMarginGroupmarginGroup (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  setSizeConstraintRect (SizeConstraintRect constraintRect)
 
void  setMarginGroup (QCP::MarginSides sides, QCPMarginGroup *group)
 
- Public Functions inherited from QCPLayerable
  QCPLayerable (QCustomPlot *plot, QString targetLayer=QString(), QCPLayerable *parentLayerable=nullptr)
 
bool  visible () const
 
QCustomPlotparentPlot () const
 
 
QCPLayerlayer () const
 
bool  antialiased () const
 
void  setVisible (bool on)
 
Q_SLOT bool  setLayer (QCPLayer *layer)
 
bool  setLayer (const QString &layerName)
 
void  setAntialiased (bool enabled)
 
bool  realVisibility () const
 

Signals

void  selectionChanged (QCPLegend::SelectableParts parts)
 
void  selectableChanged (QCPLegend::SelectableParts parts)
 
- Signals inherited from QCPLayerable
void  layerChanged (QCPLayer *newLayer)
 

Protected Functions

virtual void  parentPlotInitialized (QCustomPlot *parentPlot)
 
 
virtual void  applyDefaultAntialiasingHint (QCPPainter *painter) const
 
virtual void  draw (QCPPainter *painter)
 
virtual void  selectEvent (QMouseEvent *event, bool additive, const QVariant &details, bool *selectionStateChanged)
 
virtual void  deselectEvent (bool *selectionStateChanged)
 
QPen  getBorderPen () const
 
QBrush  getBrush () const
 
- Protected Functions inherited from QCPLayoutGrid
void  getMinimumRowColSizes (QVector< int > *minColWidths, QVector< int > *minRowHeights) const
 
void  getMaximumRowColSizes (QVector< int > *maxColWidths, QVector< int > *maxRowHeights) const
 
- Protected Functions inherited from QCPLayout
void  sizeConstraintsChanged () const
 
 
 
QVector< int >  getSectionSizes (QVector< int > maxSizes, QVector< int > minSizes, QVector< double > stretchFactors, int totalSize) const
 
- Protected Functions inherited from QCPLayoutElement
virtual int  calculateAutoMargin (QCP::MarginSide side)
 
virtual void  layoutChanged ()
 
- Protected Functions inherited from QCPLayerable
virtual QRect  clipRect () const
 
virtual void  mousePressEvent (QMouseEvent *event, const QVariant &details)
 
virtual void  mouseMoveEvent (QMouseEvent *event, const QPointF &startPos)
 
virtual void  mouseReleaseEvent (QMouseEvent *event, const QPointF &startPos)
 
virtual void  mouseDoubleClickEvent (QMouseEvent *event, const QVariant &details)
 
virtual void  wheelEvent (QWheelEvent *event)
 
void  initializeParentPlot (QCustomPlot *parentPlot)
 
 
bool  moveToLayer (QCPLayer *layer, bool prepend)
 
void  applyAntialiasingHint (QCPPainter *painter, bool localAntialiased, QCP::AntialiasedElement overrideElement) const
 

Additional Inherited Members

- Protected Static Functions inherited from QCPLayout
static QSize  getFinalMinimumOuterSize (const QCPLayoutElement *el)
 
static QSize  getFinalMaximumOuterSize (const QCPLayoutElement *el)
 

Detailed Description

Manages a legend inside a QCustomPlot.

A legend is a small box somewhere in the plot which lists plottables with their name and icon.

A legend is populated with legend items by calling QCPAbstractPlottable::addToLegend on the plottable, for which a legend item shall be created. In the case of the main legend (QCustomPlot::legend), simply adding plottables to the plot while QCustomPlot::setAutoAddPlottableToLegend is set to true (the default) creates corresponding legend items. The legend item associated with a certain plottable can be removed with QCPAbstractPlottable::removeFromLegend. However, QCPLegend also offers an interface to add and manipulate legend items directly: item, itemWithPlottable, itemCount, addItem, removeItem, etc.

Since QCPLegend derives from QCPLayoutGrid, it can be placed in any position a QCPLayoutElement may be positioned. The legend items are themselves QCPLayoutElements which are placed in the grid layout of the legend. QCPLegend only adds an interface specialized for handling child elements of type QCPAbstractLegendItem, as mentioned above. In principle, any other layout elements may also be added to a legend via the normal QCPLayoutGrid interface. See the special page about The Layout System for examples on how to add other elements to the legend and move it outside the axis rect.

Use the methods setFillOrder and setWrap inherited from QCPLayoutGrid to control in which order (column first or row first) the legend is filled up when calling addItem, and at which column or row wrapping occurs. The default fill order for legends is foRowsFirst.

By default, every QCustomPlot has one legend (QCustomPlot::legend) which is placed in the inset layout of the main axis rect (QCPAxisRect::insetLayout). To move the legend to another position inside the axis rect, use the methods of the QCPLayoutInset. To move the legend outside of the axis rect, place it anywhere else with the QCPLayout/QCPLayoutElement interface.

Member Enumeration Documentation

§ SelectablePart

Defines the selectable parts of a legend

See also
setSelectedParts, setSelectableParts
Enumerator
spNone 

0x000 None

spLegendBox 

0x001 The legend box (frame)

spItems 

0x002 Legend items individually (see selectedItems)

Constructor & Destructor Documentation

§ QCPLegend()

QCPLegend::QCPLegend ( )
explicit

Constructs a new QCPLegend instance with default values.

Note that by default, QCustomPlot already contains a legend ready to be used as QCustomPlot::legend

Member Function Documentation

§ setBorderPen()

void QCPLegend::setBorderPen ( const QPen &  pen )

Sets the pen, the border of the entire legend is drawn with.

§ setBrush()

void QCPLegend::setBrush ( const QBrush &  brush )

Sets the brush of the legend background.

§ setFont()

void QCPLegend::setFont ( const QFont &  font )

Sets the default font of legend text. Legend items that draw text (e.g. the name of a graph) will use this font by default. However, a different font can be specified on a per-item-basis by accessing the specific legend item.

This function will also set font on all already existing legend items.

See also
QCPAbstractLegendItem::setFont

§ setTextColor()

void QCPLegend::setTextColor ( const QColor &  color )

Sets the default color of legend text. Legend items that draw text (e.g. the name of a graph) will use this color by default. However, a different colors can be specified on a per-item-basis by accessing the specific legend item.

This function will also set color on all already existing legend items.

See also
QCPAbstractLegendItem::setTextColor

§ setIconSize() [1/2]

void QCPLegend::setIconSize ( const QSize &  size )

Sets the size of legend icons. Legend items that draw an icon (e.g. a visual representation of the graph) will use this size by default.

§ setIconSize() [2/2]

void QCPLegend::setIconSize ( int  width,
int  height 
)

This is an overloaded function.

§ setIconTextPadding()

void QCPLegend::setIconTextPadding ( int  padding )

Sets the horizontal space in pixels between the legend icon and the text next to it. Legend items that draw an icon (e.g. a visual representation of the graph) and text (e.g. the name of the graph) will use this space by default.

§ setIconBorderPen()

void QCPLegend::setIconBorderPen ( const QPen &  pen )

Sets the pen used to draw a border around each legend icon. Legend items that draw an icon (e.g. a visual representation of the graph) will use this pen by default.

If no border is wanted, set this to Qt::NoPen.

§ setSelectableParts()

void QCPLegend::setSelectableParts ( const SelectableParts &  selectable )

Sets whether the user can (de-)select the parts in selectable by clicking on the QCustomPlot surface. (When QCustomPlot::setInteractions contains QCP::iSelectLegend.)

However, even when selectable is set to a value not allowing the selection of a specific part, it is still possible to set the selection of this part manually, by calling setSelectedParts directly.

See also
SelectablePart, setSelectedParts

§ setSelectedParts()

void QCPLegend::setSelectedParts ( const SelectableParts &  selected )

Sets the selected state of the respective legend parts described by SelectablePart. When a part is selected, it uses a different pen/font and brush. If some legend items are selected and selected doesn't contain spItems, those items become deselected.

The entire selection mechanism is handled automatically when QCustomPlot::setInteractions contains iSelectLegend. You only need to call this function when you wish to change the selection state manually.

This function can change the selection state of a part even when setSelectableParts was set to a value that actually excludes the part.

emits the selectionChanged signal when selected is different from the previous selection state.

Note that it doesn't make sense to set the selected state spItems here when it wasn't set before, because there's no way to specify which exact items to newly select. Do this by calling QCPAbstractLegendItem::setSelected directly on the legend item you wish to select.

See also
SelectablePart, setSelectableParts, selectTest, setSelectedBorderPen, setSelectedIconBorderPen, setSelectedBrush, setSelectedFont

§ setSelectedBorderPen()

void QCPLegend::setSelectedBorderPen ( const QPen &  pen )

When the legend box is selected, this pen is used to draw the border instead of the normal pen set via setBorderPen.

See also
setSelectedParts, setSelectableParts, setSelectedBrush

§ setSelectedIconBorderPen()

void QCPLegend::setSelectedIconBorderPen ( const QPen &  pen )

Sets the pen legend items will use to draw their icon borders, when they are selected.

See also
setSelectedParts, setSelectableParts, setSelectedFont

§ setSelectedBrush()

void QCPLegend::setSelectedBrush ( const QBrush &  brush )

When the legend box is selected, this brush is used to draw the legend background instead of the normal brush set via setBrush.

See also
setSelectedParts, setSelectableParts, setSelectedBorderPen

§ setSelectedFont()

void QCPLegend::setSelectedFont ( const QFont &  font )

Sets the default font that is used by legend items when they are selected.

This function will also set font on all already existing legend items.

See also
setFont, QCPAbstractLegendItem::setSelectedFont

§ setSelectedTextColor()

void QCPLegend::setSelectedTextColor ( const QColor &  color )

Sets the default text color that is used by legend items when they are selected.

This function will also set color on all already existing legend items.

See also
setTextColor, QCPAbstractLegendItem::setSelectedTextColor

§ selectTest()

double QCPLegend::selectTest ( const QPointF &  pos,
bool  onlySelectable,
QVariant *  details = nullptr 
) const
virtual

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 QCPLayoutElement.

§ item()

QCPAbstractLegendItem * QCPLegend::item ( int  index ) const

Returns the item with index i. If non-legend items were added to the legend, and the element at the specified cell index is not a QCPAbstractLegendItem, returns nullptr.

Note that the linear index depends on the current fill order (setFillOrder).

See also
itemCount, addItem, itemWithPlottable

§ itemWithPlottable()

QCPPlottableLegendItem * QCPLegend::itemWithPlottable ( const QCPAbstractPlottableplottable ) const

Returns the QCPPlottableLegendItem which is associated with plottable (e.g. a QCPGraph*). If such an item isn't in the legend, returns nullptr.

See also
hasItemWithPlottable

§ itemCount()

int QCPLegend::itemCount ( ) const

Returns the number of items currently in the legend. It is identical to the base class QCPLayoutGrid::elementCount(), and unlike the other "item" interface methods of QCPLegend, doesn't only address elements which can be cast to QCPAbstractLegendItem.

Note that if empty cells are in the legend (e.g. by calling methods of the QCPLayoutGrid base class which allows creating empty cells), they are included in the returned count.

See also
item

§ hasItem()

bool QCPLegend::hasItem ( QCPAbstractLegendItemitem ) const

Returns whether the legend contains item.

See also
hasItemWithPlottable

§ hasItemWithPlottable()

bool QCPLegend::hasItemWithPlottable ( const QCPAbstractPlottableplottable ) const

Returns whether the legend contains a QCPPlottableLegendItem which is associated with plottable (e.g. a QCPGraph*). If such an item isn't in the legend, returns false.

See also
itemWithPlottable

§ addItem()

bool QCPLegend::addItem ( QCPAbstractLegendItemitem )

Adds item to the legend, if it's not present already. The element is arranged according to the current fill order (setFillOrder) and wrapping (setWrap).

Returns true on sucess, i.e. if the item wasn't in the list already and has been successfuly added.

The legend takes ownership of the item.

See also
removeItem, item, hasItem

§ removeItem() [1/2]

bool QCPLegend::removeItem ( int  index )

This is an overloaded function.

Removes the item with the specified index from the legend and deletes it.

After successful removal, the legend is reordered according to the current fill order (setFillOrder) and wrapping (setWrap), so no empty cell remains where the removed item was. If you don't want this, rather use the raw element interface of QCPLayoutGrid.

Returns true, if successful. Unlike QCPLayoutGrid::removeAt, this method only removes elements derived from QCPAbstractLegendItem.

See also
itemCount, clearItems

§ removeItem() [2/2]

bool QCPLegend::removeItem ( QCPAbstractLegendItemitem )

This is an overloaded function.

Removes item from the legend and deletes it.

After successful removal, the legend is reordered according to the current fill order (setFillOrder) and wrapping (setWrap), so no empty cell remains where the removed item was. If you don't want this, rather use the raw element interface of QCPLayoutGrid.

Returns true, if successful.

See also
clearItems

§ clearItems()

void QCPLegend::clearItems ( )

Removes all items from the legend.

§ selectedItems()

QList< QCPAbstractLegendItem * > QCPLegend::selectedItems ( ) const

Returns the legend items that are currently selected. If no items are selected, the list is empty.

See also
QCPAbstractLegendItem::setSelected, setSelectable

§ selectionChanged

void QCPLegend::selectionChanged ( QCPLegend::SelectableParts  selection )
signal

This signal is emitted when the selection state of this legend has changed.

See also
setSelectedParts, setSelectableParts

§ parentPlotInitialized()

void QCPLegend::parentPlotInitialized ( QCustomPlotparentPlot )
protectedvirtual

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

Reimplemented from QCPLayoutElement.

§ selectionCategory()

QCP::Interaction QCPLegend::selectionCategory ( ) const
protectedvirtual

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 from QCPLayerable.

§ applyDefaultAntialiasingHint()

void QCPLegend::applyDefaultAntialiasingHint ( QCPPainterpainter ) const
protectedvirtual

A convenience function to easily set the QPainter::Antialiased hint on the provided painter before drawing main legend elements.

This is the antialiasing state the painter passed to the draw method is in by default.

This function takes into account the local setting of the antialiasing flag as well as the overrides set with QCustomPlot::setAntialiasedElements and QCustomPlot::setNotAntialiasedElements.

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

See also
setAntialiased

Reimplemented from QCPLayoutElement.

§ draw()

void QCPLegend::draw ( QCPPainterpainter )
protectedvirtual

Draws the legend box with the provided painter. The individual legend items are layerables themselves, thus are drawn independently.

Reimplemented from QCPLayoutElement.

§ selectEvent()

void QCPLegend::selectEvent ( QMouseEvent *  event,
bool  additive,
const QVariant &  details,
bool *  selectionStateChanged 
)
protectedvirtual

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 fed 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 from QCPLayerable.

§ deselectEvent()

void QCPLegend::deselectEvent ( bool *  selectionStateChanged )
protectedvirtual

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 from QCPLayerable.

§ getBorderPen()

QPen QCPLegend::getBorderPen ( ) const
protected

Returns the pen used to paint the border of the legend, taking into account the selection state of the legend box.

§ getBrush()

QBrush QCPLegend::getBrush ( ) const
protected

Returns the brush used to paint the background of the legend, taking into account the selection state of the legend box.


The documentation for this class was generated from the following files:
  • src/layoutelements/layoutelement-legend.h
  • src/layoutelements/layoutelement-legend.cpp

AltStyle によって変換されたページ (->オリジナル) /