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

# QwtDial(3)

QwtDial class provides a rounded range control.

## NAME

QwtDial - **QwtDial** class provides a rounded range control.

## SYNOPSIS

`#include <qwt_dial.h>`

Inherits **QwtAbstractSlider**.

Inherited by **QwtAnalogClock**, and **QwtCompass**.

### Public Types

enum **Shadow** { **Plain** = QFrame::Plain, **Raised** = QFrame::Raised, **Sunken** = QFrame::Sunken }\
 Frame shadow.  enum **Mode** { **RotateNeedle**, **RotateScale** }\
 Mode controlling whether the needle or the scale is rotating.

### Public Member Functions

**QwtDial** (QWidget \*parent=NULL)\
 Constructor.  virtual **~QwtDial** ()\
 Destructor.  void **setFrameShadow** (**Shadow**)\
 **Shadow** **frameShadow** () const\
 void **setLineWidth** (int)\
 int **lineWidth** () const\
 void **setMode** (**Mode**)\
 Change the mode of the dial.  **Mode** **mode** () const\
 void **setScaleArc** (double minArc, double maxArc)\
 void **setMinScaleArc** (double)\
 double **minScaleArc** () const\
 void **setMaxScaleArc** (double)\
 double **maxScaleArc** () const\
 virtual void **setOrigin** (double)\
 Change the origin.  double **origin** () const\
 void **setNeedle** (**QwtDialNeedle** \*)\
 const **QwtDialNeedle** \* **needle** () const\
 **QwtDialNeedle** \* **needle** ()\
 QRect **boundingRect** () const\
 QRect **innerRect** () const\
 virtual QRect **scaleInnerRect** () const\
 virtual QSize **sizeHint** () const\
 virtual QSize **minimumSizeHint** () const\
 void **setScaleDraw** (**QwtRoundScaleDraw** \*)\
 **QwtRoundScaleDraw** \* **scaleDraw** ()\
 const **QwtRoundScaleDraw** \* **scaleDraw** () const\

### Protected Member Functions

virtual void **wheelEvent** (QWheelEvent \*)\
 virtual void **paintEvent** (QPaintEvent \*)\
 virtual void **changeEvent** (QEvent \*)\
 virtual void **drawFrame** (QPainter \*)\
 virtual void **drawContents** (QPainter \*) const\
 Draw the contents inside the frame.  virtual void **drawFocusIndicator** (QPainter \*) const\
 void **invalidateCache** ()\
 virtual void **drawScale** (QPainter \*, const QPointF &center, double radius) const\
 virtual void **drawScaleContents** (QPainter \*painter, const QPointF &center, double radius) const\
 virtual void **drawNeedle** (QPainter \*, const QPointF &, double radius, double direction, QPalette::ColorGroup) const\
 virtual double **scrolledTo** (const QPoint &) const\
 Determine the value for a new position of the slider handle.  virtual bool **isScrollPosition** (const QPoint &) const\
 Determine what to do when the user presses a mouse button.  virtual void **sliderChange** ()\
 Calling update()  virtual void **scaleChange** ()\

### Additional Inherited Members

## Detailed Description

**QwtDial** class provides a rounded range control.

**QwtDial** is intended as base class for dial widgets like speedometers, compass widgets, clocks ...

A dial contains a scale and a needle indicating the current value of the dial. Depending on Mode one of them is fixed and the other is rotating. If not **isReadOnly()** the dial can be rotated by dragging the mouse or using keyboard inputs (see **QwtAbstractSlider::keyPressEvent()**). A dial might be wrapping, what means a rotation below/above one limit continues on the other limit (f.e compass). The scale might cover any arc of the dial, its values are related to the **origin()** of the dial.

Often dials have to be updated very often according to values from external devices. For these high refresh rates **QwtDial** caches as much as possible. For derived classes it might be necessary to clear these caches manually according to attribute changes using **invalidateCache()**.

**See also:**

**QwtCompass**, **QwtAnalogClock**, **QwtDialNeedle**

**Note:**

The controls and dials examples shows different types of dials.

QDial is more similar to **QwtKnob** than to **QwtDial**

## Member Enumeration Documentation

### enum QwtDial::Mode

Mode controlling whether the needle or the scale is rotating.

**Enumerator**

- *RotateNeedle*

  *The needle is rotating.*

- *RotateScale*

  *The needle is fixed, the scales are rotating.*

### enum QwtDial::Shadow

*Frame shadow. Unfortunately it is not possible to use QFrame::Shadow as a property of a widget that is not derived from QFrame. The following enum is made for the designer only. It is safe to use QFrame::Shadow instead.*

**Enumerator**

- *Plain*

  *QFrame::Plain.*

- *Raised*

  *QFrame::Raised.*

- *Sunken*

  *QFrame::Sunken.*

## Constructor & Destructor Documentation

### QwtDial::QwtDial (QWidget \* parent = `NULL`)` [explicit]`

*Constructor.*

**Parameters:**

*parent Parent widget*

*Create a dial widget with no needle. The scale is initialized to \[ 0.0, 360.0 \] and 360 steps (* **QwtAbstractSlider::setTotalSteps()** *). The origin of the scale is at 90°,*

*The value is set to 0.0.*

*The default mode is* **QwtDial::RotateNeedle***.*

## Member Function Documentation

### QRect QwtDial::boundingRect () const

**Returns:**

*bounding rectangle of the dial including the frame*

**See also:**

**setLineWidth()***,* **scaleInnerRect()***,* **innerRect()**

### void QwtDial::changeEvent (QEvent \* event)` [protected]`, ` [virtual]`

*Change Event handler*

**Parameters:**

*event Change event*

*Invalidates internal paint caches if necessary*

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

*Draw the contents inside the frame. QPalette::Window is the background color outside of the frame. QPalette::Base is the background color inside the frame. QPalette::WindowText is the background color inside the scale.*

**Parameters:**

*painter Painter*

**See also:**

**boundingRect()***,* **innerRect()***,* **scaleInnerRect()***, QWidget::setPalette()*

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

*Draw the focus indicator*

**Parameters:**

*painter Painter*

### void QwtDial::drawFrame (QPainter \* painter)` [protected]`, ` [virtual]`

*Draw the frame around the dial*

**Parameters:**

*painter Painter*

**See also:**

**lineWidth()***,* **frameShadow()**

### void QwtDial::drawNeedle (QPainter \* painter, const QPointF & center, double radius, double direction, QPalette::ColorGroup colorGroup) const` [protected]`, ` [virtual]`

*Draw the needle*

**Parameters:**

*painter Painter* \
 *center Center of the dial* \
 *radius Length for the needle* \
 *direction Direction of the needle in degrees, counter clockwise* \
 *colorGroup ColorGroup*

*Reimplemented in* **QwtAnalogClock***.*

### void QwtDial::drawScale (QPainter \* painter, const QPointF & center, double radius) const` [protected]`, ` [virtual]`

*Draw the scale*

**Parameters:**

*painter Painter* \
 *center Center of the dial* \
 *radius Radius of the scale*

### void QwtDial::drawScaleContents (QPainter \* painter, const QPointF & center, double radius) const` [protected]`, ` [virtual]`

*Draw the contents inside the scale*

*Paints nothing.*

**Parameters:**

*painter Painter* \
 *center Center of the contents circle* \
 *radius Radius of the contents circle*

*Reimplemented in* **QwtCompass***.*

### QwtDial::Shadow QwtDial::frameShadow () const

**Returns:**

*Frame shadow /sa* **setFrameShadow()***,* **lineWidth()***, QFrame::frameShadow()*

### QRect QwtDial::innerRect () const

**Returns:**

*bounding rectangle of the circle inside the frame*

**See also:**

**setLineWidth()***,* **scaleInnerRect()***,* **boundingRect()**

### void QwtDial::invalidateCache ()` [protected]`

*Invalidate the internal caches used to speed up repainting*

### bool QwtDial::isScrollPosition (const QPoint & pos) const` [protected]`, ` [virtual]`

*Determine what to do when the user presses a mouse button.*

**Parameters:**

*pos Mouse position*

**Return values:**

*True,when the inner circle contains pos*

**See also:**

**scrolledTo()**

*Implements* **QwtAbstractSlider***.*

### int QwtDial::lineWidth () const

**Returns:**

*Line width of the frame*

**See also:**

**setLineWidth()***,* **frameShadow()***,* **lineWidth()**

### double QwtDial::maxScaleArc () const

**Returns:**

*Upper limit of the scale arc*

**See also:**

**setScaleArc()**

### QSize QwtDial::minimumSizeHint () const` [virtual]`

**Returns:**

*Minimum size hint*

**See also:**

**sizeHint()**

### double QwtDial::minScaleArc () const

**Returns:**

*Lower limit of the scale arc*

**See also:**

**setScaleArc()**

### QwtDial::Mode QwtDial::mode () const

**Returns:**

*Mode of the dial.*

**See also:**

**setMode()***,* **origin()***,* **setScaleArc()***,* **value()**

### const QwtDialNeedle \* QwtDial::needle () const

**Returns:**

*needle*

**See also:**

**setNeedle()**

### QwtDialNeedle \* QwtDial::needle ()

**Returns:**

*needle*

**See also:**

**setNeedle()**

### double QwtDial::origin () const

*The origin is the angle where scale and needle is relative to.*

**Returns:**

*Origin of the dial*

**See also:**

**setOrigin()**

### void QwtDial::paintEvent (QPaintEvent \* event)` [protected]`, ` [virtual]`

*Paint the dial*

**Parameters:**

*event Paint event*

### void QwtDial::scaleChange ()` [protected]`, ` [virtual]`

*Invalidate the internal caches and call* **QwtAbstractSlider::scaleChange()**

*Reimplemented from* **QwtAbstractSlider***.*

### QwtRoundScaleDraw \* QwtDial::scaleDraw ()

**Returns:**

*the scale draw*

### const QwtRoundScaleDraw \* QwtDial::scaleDraw () const

**Returns:**

*the scale draw*

### QRect QwtDial::scaleInnerRect () const` [virtual]`

**Returns:**

*rectangle inside the scale*

**See also:**

**setLineWidth()***,* **boundingRect()***,* **innerRect()**

### double QwtDial::scrolledTo (const QPoint & pos) const` [protected]`, ` [virtual]`

*Determine the value for a new position of the slider handle.*

**Parameters:**

*pos Mouse position*

**Returns:**

*Value for the mouse position*

**See also:**

**isScrollPosition()**

*Implements* **QwtAbstractSlider***.*

### void QwtDial::setFrameShadow (Shadow shadow)

*Sets the frame shadow value from the frame style.*

**Parameters:**

*shadow Frame shadow*

**See also:**

**setLineWidth()***, QFrame::setFrameShadow()*

### void QwtDial::setLineWidth (int lineWidth)

*Sets the line width of the frame*

**Parameters:**

*lineWidth Line width*

**See also:**

**setFrameShadow()**

### void QwtDial::setMaxScaleArc (double max)

*Set the upper limit for the scale arc*

**Parameters:**

*max Upper limit of the scale arc*

**See also:**

**setScaleArc()***,* **setMinScaleArc()**

### void QwtDial::setMinScaleArc (double min)

*Set the lower limit for the scale arc*

**Parameters:**

*min Lower limit of the scale arc*

**See also:**

**setScaleArc()***,* **setMaxScaleArc()**

### void QwtDial::setMode (Mode mode)

*Change the mode of the dial.*

**Parameters:**

*mode New mode*

*In case of* **QwtDial::RotateNeedle** *the needle is rotating, in case of* **QwtDial::RotateScale***, the needle points to* **origin()** *and the scale is rotating.*

*The default mode is* **QwtDial::RotateNeedle***.*

**See also:**

**mode()***,* **setValue()***,* **setOrigin()**

### void QwtDial::setNeedle (QwtDialNeedle \* needle)

*Set a needle for the dial*

**Parameters:**

*needle Needle*

**Warning:**

*The needle will be deleted, when a different needle is set or in* **~QwtDial()**

### void QwtDial::setOrigin (double origin)` [virtual]`

*Change the origin. The origin is the angle where scale and needle is relative to.*

**Parameters:**

*origin New origin*

**See also:**

**origin()**

### void QwtDial::setScaleArc (double minArc, double maxArc)

*Change the arc of the scale*

**Parameters:**

*minArc Lower limit* \
 *maxArc Upper limit*

**See also:**

**minScaleArc()***,* **maxScaleArc()**

### void QwtDial::setScaleDraw (QwtRoundScaleDraw \* scaleDraw)

*Set an individual scale draw*

*The motivation for setting a scale draw is often to overload* **QwtRoundScaleDraw::label()** *to return individual tick labels.*

**Parameters:**

*scaleDraw Scale draw*

**Warning:**

*The previous scale draw is deleted*

### QSize QwtDial::sizeHint () const` [virtual]`

**Returns:**

*Size hint*

**See also:**

**minimumSizeHint()**

### void QwtDial::wheelEvent (QWheelEvent \* event)` [protected]`, ` [virtual]`

*Wheel Event handler*

**Parameters:**

*event Wheel event*

*Reimplemented from* **QwtAbstractSlider***.*

## Author

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