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

# QwtScaleDraw(3)

A class for drawing scales.

## NAME

QwtScaleDraw - A class for drawing scales.

## SYNOPSIS

`#include <qwt_scale_draw.h>`

Inherits **QwtAbstractScaleDraw**.

Inherited by **QwtDateScaleDraw**.

### Public Types

enum **Alignment** { **BottomScale**, **TopScale**, **LeftScale**, **RightScale** }\

### Public Member Functions

**QwtScaleDraw** ()\
 Constructor.  virtual **~QwtScaleDraw** ()\
 Destructor.  void **getBorderDistHint** (const QFont &, int &start, int &end) const\
 Determine the minimum border distance.  int **minLabelDist** (const QFont &) const\
 int **minLength** (const QFont &) const\
 virtual double **extent** (const QFont &) const\
 void **move** (double x, double y)\
 void **move** (const QPointF &)\
 Move the position of the scale.  void **setLength** (double **length**)\
 **Alignment** **alignment** () const\
 void **setAlignment** (**Alignment**)\
 Qt::Orientation **orientation** () const\
 QPointF **pos** () const\
 double **length** () const\
 void **setLabelAlignment** (Qt::Alignment)\
 Change the label flags.  Qt::Alignment **labelAlignment** () const\
 void **setLabelRotation** (double rotation)\
 double **labelRotation** () const\
 int **maxLabelHeight** (const QFont &) const\
 int **maxLabelWidth** (const QFont &) const\
 QPointF **labelPosition** (double value) const\
 QRectF **labelRect** (const QFont &, double value) const\
 QSizeF **labelSize** (const QFont &, double value) const\
 QRect **boundingLabelRect** (const QFont &, double value) const\
 Find the bounding rectangle for the label.

### Protected Member Functions

QTransform **labelTransformation** (const QPointF &, const QSizeF &) const\
 virtual void **drawTick** (QPainter \*, double value, double len) const\
 virtual void **drawBackbone** (QPainter \*) const\
 virtual void **drawLabel** (QPainter \*, double value) const\

## Detailed Description

A class for drawing scales.

**QwtScaleDraw** can be used to draw linear or logarithmic scales. A scale has a position, an alignment and a length, which can be specified . The labels can be rotated and aligned to the ticks using **setLabelRotation()** and **setLabelAlignment()**.

After a scale division has been specified as a **QwtScaleDiv** object using **QwtAbstractScaleDraw::setScaleDiv(const QwtScaleDiv &s)**, the scale can be drawn with the **QwtAbstractScaleDraw::draw()** member.

## Member Enumeration Documentation

### enum QwtScaleDraw::Alignment

Alignment of the scale draw

**See also:**

**setAlignment()**, **alignment()**

**Enumerator**

- *BottomScale*

  *The scale is below.*

- *TopScale*

  *The scale is above.*

- *LeftScale*

  *The scale is left.*

- *RightScale*

  *The scale is right.*

## Constructor & Destructor Documentation

### QwtScaleDraw::QwtScaleDraw ()

*Constructor. The range of the scale is initialized to \[0, 100\], The position is at (0, 0) with a length of 100. The orientation is QwtAbstractScaleDraw::Bottom.*

## Member Function Documentation

### QwtScaleDraw::Alignment QwtScaleDraw::alignment () const

*Return alignment of the scale*

**See also:**

**setAlignment()**

**Returns:**

*Alignment of the scale*

### QRect QwtScaleDraw::boundingLabelRect (const QFont & font, double value) const

*Find the bounding rectangle for the label. The coordinates of the rectangle are absolute ( calculated from* **pos()** *). in direction of the tick.*

**Parameters:**

*font Font used for painting* \
 *value Value*

**Returns:**

*Bounding rectangle*

**See also:**

**labelRect()**

### void QwtScaleDraw::drawBackbone (QPainter \* painter) const` [protected]`, ` [virtual]`

*Draws the baseline of the scale*

**Parameters:**

*painter Painter*

**See also:**

**drawTick()***,* **drawLabel()**

*Implements* **QwtAbstractScaleDraw***.*

### void QwtScaleDraw::drawLabel (QPainter \* painter, double value) const` [protected]`, ` [virtual]`

*Draws the label for a major scale tick*

**Parameters:**

*painter Painter* \
 *value Value*

**See also:**

**drawTick()***,* **drawBackbone()***,* **boundingLabelRect()**

*Implements* **QwtAbstractScaleDraw***.*

### void QwtScaleDraw::drawTick (QPainter \* painter, double value, double len) const` [protected]`, ` [virtual]`

*Draw a tick*

**Parameters:**

*painter Painter* \
 *value Value of the tick* \
 *len Length of the tick*

**See also:**

**drawBackbone()***,* **drawLabel()**

*Implements* **QwtAbstractScaleDraw***.*

### double QwtScaleDraw::extent (const QFont & font) const` [virtual]`

*Calculate the width/height that is needed for a vertical/horizontal scale.*

*The extent is calculated from the pen width of the backbone, the major tick length, the spacing and the maximum width/height of the labels.*

**Parameters:**

*font Font used for painting the labels*

**Returns:**

*Extent*

**See also:**

**minLength()**

*Implements* **QwtAbstractScaleDraw***.*

### void QwtScaleDraw::getBorderDistHint (const QFont & font, int & start, int & end) const

*Determine the minimum border distance. This member function returns the minimum space needed to draw the mark labels at the scale's endpoints.*

**Parameters:**

*font Font* \
 *start Start border distance* \
 *end End border distance*

### Qt::Alignment QwtScaleDraw::labelAlignment () const

**Returns:**

*the label flags*

**See also:**

**setLabelAlignment()***,* **labelRotation()**

### QPointF QwtScaleDraw::labelPosition (double value) const

*Find the position, where to paint a label*

*The position has a distance that depends on the length of the ticks in direction of the* **alignment()***.*

**Parameters:**

*value Value*

**Returns:**

*Position, where to paint a label*

### QRectF QwtScaleDraw::labelRect (const QFont & font, double value) const

*Find the bounding rectangle for the label. The coordinates of the rectangle are relative to spacing + tick length from the backbone in direction of the tick.*

**Parameters:**

*font Font used for painting* \
 *value Value*

**Returns:**

*Bounding rectangle that is needed to draw a label*

### double QwtScaleDraw::labelRotation () const

**Returns:**

*the label rotation*

**See also:**

**setLabelRotation()***,* **labelAlignment()**

### QSizeF QwtScaleDraw::labelSize (const QFont & font, double value) const

*Calculate the size that is needed to draw a label*

**Parameters:**

*font Label font* \
 *value Value*

**Returns:**

*Size that is needed to draw a label*

### QTransform QwtScaleDraw::labelTransformation (const QPointF & pos, const QSizeF & size) const` [protected]`

*Calculate the transformation that is needed to paint a label depending on its alignment and rotation.*

**Parameters:**

*pos Position where to paint the label* \
 *size Size of the label*

**Returns:**

*Transformation matrix*

**See also:**

**setLabelAlignment()***,* **setLabelRotation()**

### double QwtScaleDraw::length () const

**Returns:**

*the length of the backbone*

**See also:**

**setLength()***,* **pos()**

### int QwtScaleDraw::maxLabelHeight (const QFont & font) const

**Parameters:**

*font Font*

**Returns:**

*the maximum height of a label*

### int QwtScaleDraw::maxLabelWidth (const QFont & font) const

**Parameters:**

*font Font*

**Returns:**

*the maximum width of a label*

### int QwtScaleDraw::minLabelDist (const QFont & font) const

*Determine the minimum distance between two labels, that is necessary that the texts don't overlap.*

**Parameters:**

*font Font*

**Returns:**

*The maximum width of a label*

**See also:**

**getBorderDistHint()**

### int QwtScaleDraw::minLength (const QFont & font) const

*Calculate the minimum length that is needed to draw the scale*

**Parameters:**

*font Font used for painting the labels*

**Returns:**

*Minimum length that is needed to draw the scale*

**See also:**

**extent()**

### void QwtScaleDraw::move (double x, double y)` [inline]`

*Move the position of the scale*

**Parameters:**

*x X coordinate* \
 *y Y coordinate*

**See also:**

**move(const QPointF &)**

### void QwtScaleDraw::move (const QPointF & pos)

*Move the position of the scale. The meaning of the parameter pos depends on the alignment:*

- **QwtScaleDraw::LeftScale**

  *The origin is the topmost point of the backbone. The backbone is a vertical line. Scale marks and labels are drawn at the left of the backbone.*

- **QwtScaleDraw::RightScale**

  *The origin is the topmost point of the backbone. The backbone is a vertical line. Scale marks and labels are drawn at the right of the backbone.*

- **QwtScaleDraw::TopScale**

  *The origin is the leftmost point of the backbone. The backbone is a horizontal line. Scale marks and labels are drawn above the backbone.*

- **QwtScaleDraw::BottomScale**

  *The origin is the leftmost point of the backbone. The backbone is a horizontal line Scale marks and labels are drawn below the backbone.*

**Parameters:**

*pos Origin of the scale*

**See also:**

**pos()***,* **setLength()**

### Qt::Orientation QwtScaleDraw::orientation () const

*Return the orientation*

*TopScale, BottomScale are horizontal (Qt::Horizontal) scales, LeftScale, RightScale are vertical (Qt::Vertical) scales.*

**Returns:**

*Orientation of the scale*

**See also:**

**alignment()**

### QPointF QwtScaleDraw::pos () const

**Returns:**

*Origin of the scale*

**See also:**

**move()***,* **length()**

### void QwtScaleDraw::setAlignment (Alignment align)

*Set the alignment of the scale*

**Parameters:**

*align Alignment of the scale*

*The default alignment is* **QwtScaleDraw::BottomScale**

**See also:**

**alignment()**

### void QwtScaleDraw::setLabelAlignment (Qt::Alignment alignment)

*Change the label flags. Labels are aligned to the point tick length + spacing away from the backbone.*

*The alignment is relative to the orientation of the label text. In case of an flags of 0 the label will be aligned depending on the orientation of the scale:*

```
QwtScaleDraw::TopScale: Qt::AlignHCenter | Qt::AlignTop0
QwtScaleDraw::BottomScale: Qt::AlignHCenter | Qt::AlignBottom0
QwtScaleDraw::LeftScale: Qt::AlignLeft | Qt::AlignVCenter0
QwtScaleDraw::RightScale: Qt::AlignRight | Qt::AlignVCenter0
```

*Changing the alignment is often necessary for rotated labels.*

**Parameters:**

*alignment Or'd Qt::AlignmentFlags see \<qnamespace.h\>*

**See also:**

**setLabelRotation()***,* **labelRotation()***,* **labelAlignment()**

**Warning:**

*The various alignments might be confusing. The alignment of the label is not the alignment of the scale and is not the alignment of the flags ( QwtText::flags() ) returned from* **QwtAbstractScaleDraw::label()***.*

### void QwtScaleDraw::setLabelRotation (double rotation)

*Rotate all labels.*

*When changing the rotation, it might be necessary to adjust the label flags too. Finding a useful combination is often the result of try and error.*

**Parameters:**

*rotation Angle in degrees. When changing the label rotation, the label flags often needs to be adjusted too.*

**See also:**

**setLabelAlignment()***,* **labelRotation()***,* **labelAlignment()***.*

### void QwtScaleDraw::setLength (double length)

*Set the length of the backbone.*

*The length doesn't include the space needed for overlapping labels.*

**Parameters:**

*length Length of the backbone*

**See also:**

**move()***,* **minLabelDist()**

## Author

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