---
name: "QwtSymbol"
section: "3"
platform: "linux"
package: "libqwt-doc"
version: "6.1.4-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/QwtSymbol"
---

# QwtSymbol(3)

A class for drawing symbols.

## NAME

QwtSymbol - A class for drawing symbols.

## SYNOPSIS

`#include <qwt_symbol.h>`

### Public Types

enum **Style** { **NoSymbol** = -1, **Ellipse**, **Rect**, **Diamond**, **Triangle**, **DTriangle**, **UTriangle**, **LTriangle**, **RTriangle**, **Cross**, **XCross**, **HLine**, **VLine**, **Star1**, **Star2**, **Hexagon**, **Path**, **Pixmap**, **Graphic**, **SvgDocument**, **UserStyle** = 1000 }\
 enum **CachePolicy** { **NoCache**, **Cache**, **AutoCache** }\

### Public Member Functions

**QwtSymbol** (**Style**=**NoSymbol**)\
 **QwtSymbol** (**Style**, const QBrush &, const QPen &, const QSize &)\
 Constructor.  **QwtSymbol** (const QPainterPath &, const QBrush &, const QPen &)\
 Constructor.  virtual **~QwtSymbol** ()\
 Destructor.  void **setCachePolicy** (**CachePolicy**)\
 **CachePolicy** **cachePolicy** () const\
 void **setSize** (const QSize &)\
 void **setSize** (int width, int height=-1)\
 Specify the symbol's size.  const QSize & **size** () const\
 void **setPinPoint** (const QPointF &pos, bool enable=true)\
 Set and enable a pin point.  QPointF **pinPoint** () const\
 void **setPinPointEnabled** (bool)\
 bool **isPinPointEnabled** () const\
 virtual void **setColor** (const QColor &)\
 Set the color of the symbol.  void **setBrush** (const QBrush &)\
 Assign a brush.  const QBrush & **brush** () const\
 void **setPen** (const QColor &, qreal width=0.0, Qt::PenStyle=Qt::SolidLine)\
 void **setPen** (const QPen &)\
 const QPen & **pen** () const\
 void **setStyle** (**Style**)\
 **Style** **style** () const\
 void **setPath** (const QPainterPath &)\
 Set a painter path as symbol.  const QPainterPath & **path** () const\
 void **setPixmap** (const QPixmap &)\
 const QPixmap & **pixmap** () const\
 void **setGraphic** (const **QwtGraphic** &)\
 const **QwtGraphic** & **graphic** () const\
 void **setSvgDocument** (const QByteArray &)\
 void **drawSymbol** (QPainter \*, const QRectF &) const\
 Draw the symbol into a rectangle.  void **drawSymbol** (QPainter \*, const QPointF &) const\
 Draw the symbol at a specified position.  void **drawSymbols** (QPainter \*, const QPolygonF &) const\
 Draw symbols at the specified points.  void **drawSymbols** (QPainter \*, const QPointF \*, int numPoints) const\
 virtual QRect **boundingRect** () const\
 void **invalidateCache** ()\

### Protected Member Functions

virtual void **renderSymbols** (QPainter \*, const QPointF \*, int numPoints) const\

## Detailed Description

A class for drawing symbols.

## Member Enumeration Documentation

### enum QwtSymbol::CachePolicy

Depending on the render engine and the complexity of the symbol shape it might be faster to render the symbol to a pixmap and to paint this pixmap.

F.e. the raster paint engine is a pure software renderer where in cache mode a draw operation usually ends in raster operation with the the backing store, that are usually faster, than the algorithms for rendering polygons. But the opposite can be expected for graphic pipelines that can make use of hardware acceleration.

The default setting is AutoCache

**See also:**

**setCachePolicy()**, **cachePolicy()**

**Note:**

The policy has no effect, when the symbol is painted to a vector graphics format ( PDF, SVG ).

**Warning:**

Since Qt 4.8 raster is the default backend on X11

**Enumerator**

- *NoCache*

  *Don't use a pixmap cache.*

- *Cache*

  *Always use a pixmap cache.*

- *AutoCache*

  *Use a cache when one of the following conditions is true:*

- •

  *The symbol is rendered with the software renderer ( QPaintEngine::Raster )*

### enum QwtSymbol::Style

*Symbol Style*

**See also:**

**setStyle()***,* **style()**

**Enumerator**

- *NoSymbol*

  *No Style. The symbol cannot be drawn.*

- *Ellipse*

  *Ellipse or circle.*

- *Rect*

  *Rectangle.*

- *Diamond*

  *Diamond.*

- *Triangle*

  *Triangle pointing upwards.*

- *DTriangle*

  *Triangle pointing downwards.*

- *UTriangle*

  *Triangle pointing upwards.*

- *LTriangle*

  *Triangle pointing left.*

- *RTriangle*

  *Triangle pointing right.*

- *Cross*

  *Cross (+)*

- *XCross*

  *Diagonal cross (X)*

- *HLine*

  *Horizontal line.*

- *VLine*

  *Vertical line.*

- *Star1*

  *X combined with +.*

- *Star2*

  *Six-pointed star.*

- *Hexagon*

  *Hexagon.*

- *Path*

  *The symbol is represented by a painter path, where the origin ( 0, 0 ) of the path coordinate system is mapped to the position of the symbol.*

**See also:**

**setPath()***,* **path()**

- *Pixmap*

  *The symbol is represented by a pixmap. The pixmap is centered or aligned to its pin point.*

**See also:**

**setPinPoint()**

- *Graphic*

  *The symbol is represented by a graphic. The graphic is centered or aligned to its pin point.*

**See also:**

**setPinPoint()**

- *SvgDocument*

  *The symbol is represented by a SVG graphic. The graphic is centered or aligned to its pin point.*

**See also:**

**setPinPoint()**

- *UserStyle*

  *Styles \>= QwtSymbol::UserSymbol are reserved for derived classes of* **QwtSymbol** *that overload* **drawSymbols()** *with additional application specific symbol types.*

## Constructor & Destructor Documentation

### QwtSymbol::QwtSymbol (Style style = NoSymbol)

*Default Constructor*

**Parameters:**

*style Symbol Style*

*The symbol is constructed with gray interior, black outline with zero width, no size and style 'NoSymbol'.*

### QwtSymbol::QwtSymbol (QwtSymbol::Style style, const QBrush & brush, const QPen & pen, const QSize & size)

*Constructor.*

**Parameters:**

*style Symbol Style* \
 *brush brush to fill the interior* \
 *pen outline pen* \
 *size size*

**See also:**

**setStyle()***,* **setBrush()***,* **setPen()***,* **setSize()**

### QwtSymbol::QwtSymbol (const QPainterPath & path, const QBrush & brush, const QPen & pen)

*Constructor. The symbol gets initialized by a painter path. The style is set to* **QwtSymbol::Path***, the size is set to empty ( the path is displayed unscaled ).*

**Parameters:**

*path painter path* \
 *brush brush to fill the interior* \
 *pen outline pen*

**See also:**

**setPath()***,* **setBrush()***,* **setPen()***,* **setSize()**

## Member Function Documentation

### QRect QwtSymbol::boundingRect () const` [virtual]`

*Calculate the bounding rectangle for a symbol at position (0,0).*

**Returns:**

*Bounding rectangle*

### const QBrush & QwtSymbol::brush () const

**Returns:**

*Brush*

**See also:**

**setBrush()**

### QwtSymbol::CachePolicy QwtSymbol::cachePolicy () const

**Returns:**

*Cache policy*

**See also:**

**CachePolicy***,* **setCachePolicy()**

### void QwtSymbol::drawSymbol (QPainter \* painter, const QRectF & rect) const

*Draw the symbol into a rectangle. The symbol is painted centered and scaled into the target rectangle. It is always painted uncached and the pin point is ignored.*

*This method is primarily intended for drawing a symbol to the legend.*

**Parameters:**

*painter Painter* \
 *rect Target rectangle for the symbol*

### void QwtSymbol::drawSymbol (QPainter \* painter, const QPointF & pos) const` [inline]`

*Draw the symbol at a specified position.*

**Parameters:**

*painter Painter* \
 *pos Position of the symbol in screen coordinates*

### void QwtSymbol::drawSymbols (QPainter \* painter, const QPolygonF & points) const` [inline]`

*Draw symbols at the specified points.*

**Parameters:**

*painter Painter* \
 *points Positions of the symbols in screen coordinates*

### void QwtSymbol::drawSymbols (QPainter \* painter, const QPointF \* points, int numPoints) const

*Render an array of symbols*

*Painting several symbols is more effective than drawing symbols one by one, as a couple of layout calculations and setting of pen/brush can be done once for the complete array.*

**Parameters:**

*painter Painter* \
 *points Array of points* \
 *numPoints Number of points*

### const QwtGraphic & QwtSymbol::graphic () const

**Returns:**

*Assigned graphic*

**See also:**

**setGraphic()**

### void QwtSymbol::invalidateCache ()

*Invalidate the cached symbol pixmap*

*The symbol invalidates its cache, whenever an attribute is changed that has an effect ob how to display a symbol. In case of derived classes with individual styles ( \>=* **QwtSymbol::UserStyle** *) it might be necessary to call* **invalidateCache()** *for attributes that are relevant for this style.*

**See also:**

**CachePolicy***,* **setCachePolicy()***,* **drawSymbols()**

### bool QwtSymbol::isPinPointEnabled () const

**Returns:**

*True, when the pin point translation is enabled*

**See also:**

**setPinPoint()***,* **setPinPointEnabled()**

### const QPainterPath & QwtSymbol::path () const

**Returns:**

*Painter path for displaying the symbol*

**See also:**

**setPath()**

### const QPen & QwtSymbol::pen () const

**Returns:**

*Pen*

**See also:**

**setPen()***,* **brush()**

### QPointF QwtSymbol::pinPoint () const

**Returns:**

*Pin point*

**See also:**

**setPinPoint()***,* **setPinPointEnabled()**

### const QPixmap & QwtSymbol::pixmap () const

**Returns:**

*Assigned pixmap*

**See also:**

**setPixmap()**

### void QwtSymbol::renderSymbols (QPainter \* painter, const QPointF \* points, int numPoints) const` [protected]`, ` [virtual]`

*Render the symbol to series of points*

**Parameters:**

*painter Qt painter* \
 *points Positions of the symbols* \
 *numPoints Number of points*

### void QwtSymbol::setBrush (const QBrush & brush)

*Assign a brush. The brush is used to draw the interior of the symbol.*

**Parameters:**

*brush Brush*

**See also:**

**brush()**

### void QwtSymbol::setCachePolicy (QwtSymbol::CachePolicy policy)

*Change the cache policy*

*The default policy is AutoCache*

**Parameters:**

*policy Cache policy*

**See also:**

**CachePolicy***,* **cachePolicy()**

### void QwtSymbol::setColor (const QColor & color)` [virtual]`

*Set the color of the symbol. Change the color of the brush for symbol types with a filled area. For all other symbol types the color will be assigned to the pen.*

**Parameters:**

*color Color*

**See also:**

**setBrush()***,* **setPen()***,* **brush()***,* **pen()**

### void QwtSymbol::setGraphic (const QwtGraphic & graphic)

*Set a graphic as symbol*

**Parameters:**

*graphic Graphic*

**See also:**

**graphic()***,* **setPixmap()**

**Note:**

*the* **style()** *is set to* **QwtSymbol::Graphic**

**brush()** *and* **pen()** *have no effect*

### void QwtSymbol::setPath (const QPainterPath & path)

*Set a painter path as symbol. The symbol is represented by a painter path, where the origin ( 0, 0 ) of the path coordinate system is mapped to the position of the symbol.*

*When the symbol has valid size the painter path gets scaled to fit into the size. Otherwise the symbol size depends on the bounding rectangle of the path.*

**Example**

*The following code defines a symbol drawing an arrow:*

```
#include <qwt_symbol.h>
QwtSymbol *symbol = new QwtSymbol();
QPen pen( Qt::black, 2 );
pen.setJoinStyle( Qt::MiterJoin );
symbol->setPen( pen );
symbol->setBrush( Qt::red );
QPainterPath path;
path.moveTo( 0, 8 );
path.lineTo( 0, 5 );
path.lineTo( -3, 5 );
path.lineTo( 0, 0 );
path.lineTo( 3, 5 );
path.lineTo( 0, 5 );
QTransform transform;
transform.rotate( -30.0 );
path = transform.map( path );
symbol->setPath( path );
symbol->setPinPoint( QPointF( 0.0, 0.0 ) );
setSize( 10, 14 );
```

**Parameters:**

*path Painter path*

**Note:**

*The style is implicitely set to* **QwtSymbol::Path***.*

**See also:**

**path()***,* **setSize()**

### void QwtSymbol::setPen (const QColor & color, qreal width = `0.0`, Qt::PenStyle style = `Qt::SolidLine`)

*Build and assign a pen*

*In Qt5 the default pen width is 1.0 ( 0.0 in Qt4 ) what makes it non cosmetic ( see QPen::isCosmetic() ). This method has been introduced to hide this incompatibility.*

**Parameters:**

*color Pen color* \
 *width Pen width* \
 *style Pen style*

**See also:**

**pen()***,* **brush()**

### void QwtSymbol::setPen (const QPen & pen)

*Assign a pen*

*The pen is used to draw the symbol's outline.*

**Parameters:**

*pen Pen*

**See also:**

**pen()***,* **setBrush()**

### void QwtSymbol::setPinPoint (const QPointF & pos, bool enable = `true`)

*Set and enable a pin point. The position of a complex symbol is not always aligned to its center ( f.e an arrow, where the peak points to a position ). The pin point defines the position inside of a Pixmap, Graphic, SvgDocument or PainterPath symbol where the represented point has to be aligned to.*

**Parameters:**

*pos Position* \
 *enable En/Disable the pin point alignment*

**See also:**

**pinPoint()***,* **setPinPointEnabled()**

### void QwtSymbol::setPinPointEnabled (bool on)

*En/Disable the pin point alignment*

**Parameters:**

*on Enabled, when on is true*

**See also:**

**setPinPoint()***,* **isPinPointEnabled()**

### void QwtSymbol::setPixmap (const QPixmap & pixmap)

*Set a pixmap as symbol*

**Parameters:**

*pixmap Pixmap*

**See also:**

**pixmap()***,* **setGraphic()**

**Note:**

*the* **style()** *is set to* **QwtSymbol::Pixmap**

**brush()** *and* **pen()** *have no effect*

### void QwtSymbol::setSize (const QSize & size)

*Set the symbol's size*

**Parameters:**

*size Size*

**See also:**

**size()**

### void QwtSymbol::setSize (int width, int height = `-1`)

*Specify the symbol's size. If the 'h' parameter is left out or less than 0, and the 'w' parameter is greater than or equal to 0, the symbol size will be set to (w,w).*

**Parameters:**

*width Width* \
 *height Height (defaults to -1)*

**See also:**

**size()**

### void QwtSymbol::setStyle (QwtSymbol::Style style)

*Specify the symbol style*

**Parameters:**

*style Style*

**See also:**

**style()**

### void QwtSymbol::setSvgDocument (const QByteArray & svgDocument)

*Set a SVG icon as symbol*

**Parameters:**

*svgDocument SVG icon*

**See also:**

**setGraphic()***,* **setPixmap()**

**Note:**

*the* **style()** *is set to* **QwtSymbol::SvgDocument**

**brush()** *and* **pen()** *have no effect*

### const QSize & QwtSymbol::size () const

**Returns:**

*Size*

**See also:**

**setSize()**

### QwtSymbol::Style QwtSymbol::style () const

**Returns:**

*Current symbol style*

**See also:**

**setStyle()**

## Author

*Generated automatically by Doxygen for Qwt User's Guide from the source code.*
