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

# QwtPlotTradingCurve(3)

QwtPlotTradingCurve illustrates movements in the price of a financial instrument over time.

## NAME

QwtPlotTradingCurve - **QwtPlotTradingCurve** illustrates movements in the price of a financial instrument over time.

## SYNOPSIS

`#include <qwt_plot_tradingcurve.h>`

Inherits **QwtPlotSeriesItem**, and **QwtSeriesStore\< QwtOHLCSample \>**.

### Public Types

enum **SymbolStyle** { **NoSymbol** = -1, **Bar**, **CandleStick**, **UserSymbol** = 100 }\
 Symbol styles.  enum **Direction** { **Increasing**, **Decreasing** }\
 Direction of a price movement.  enum **PaintAttribute** { **ClipSymbols** = 0x01 }\
 typedef QFlags\< **PaintAttribute** \> **PaintAttributes**\
 Paint attributes.

### Public Member Functions

**QwtPlotTradingCurve** (const QString &**title**=QString())\
 **QwtPlotTradingCurve** (const **QwtText** &**title**)\
 virtual **~QwtPlotTradingCurve** ()\
 Destructor.  virtual int **rtti** () const\
 void **setPaintAttribute** (**PaintAttribute**, bool on=true)\
 bool **testPaintAttribute** (**PaintAttribute**) const\
 void **setSamples** (const QVector\< **QwtOHLCSample** \> &)\
 void **setSamples** (**QwtSeriesData**\< **QwtOHLCSample** \> \*)\
 void **setSymbolStyle** (**SymbolStyle** style)\
 **SymbolStyle** **symbolStyle** () const\
 void **setSymbolPen** (const QColor &, qreal width=0.0, Qt::PenStyle=Qt::SolidLine)\
 void **setSymbolPen** (const QPen &)\
 Set the symbol pen.  QPen **symbolPen** () const\
 void **setSymbolBrush** (**Direction**, const QBrush &)\
 QBrush **symbolBrush** (**Direction**) const\
 void **setSymbolExtent** (double)\
 Set the extent of the symbol.  double **symbolExtent** () const\
 void **setMinSymbolWidth** (double)\
 double **minSymbolWidth** () const\
 void **setMaxSymbolWidth** (double)\
 double **maxSymbolWidth** () const\
 virtual void **drawSeries** (QPainter \*painter, const **QwtScaleMap** &xMap, const **QwtScaleMap** &yMap, const QRectF &canvasRect, int from, int to) const\
 virtual QRectF **boundingRect** () const\
 virtual **QwtGraphic** **legendIcon** (int index, const QSizeF &) const\

### Protected Member Functions

void **init** ()\
 Initialize internal members.  virtual void **drawSymbols** (QPainter \*, const **QwtScaleMap** &xMap, const **QwtScaleMap** &yMap, const QRectF &canvasRect, int from, int to) const\
 virtual void **drawUserSymbol** (QPainter \*, **SymbolStyle**, const **QwtOHLCSample** &, Qt::Orientation, bool inverted, double symbolWidth) const\
 Draw a symbol for a symbol style \>= UserSymbol.  void **drawBar** (QPainter \*painter, const **QwtOHLCSample** &, Qt::Orientation, bool inverted, double width) const\
 Draw a bar.  void **drawCandleStick** (QPainter \*, const **QwtOHLCSample** &, Qt::Orientation, double width) const\
 Draw a candle stick.  virtual double **scaledSymbolWidth** (const **QwtScaleMap** &xMap, const **QwtScaleMap** &yMap, const QRectF &canvasRect) const\

## Detailed Description

**QwtPlotTradingCurve** illustrates movements in the price of a financial instrument over time.

**QwtPlotTradingCurve** supports candlestick or bar ( OHLC ) charts that are used in the domain of technical analysis.

While the length ( height or width depending on **orientation()** ) of each symbol depends on the corresponding OHLC sample the size of the other dimension can be controlled using:

- •

  **setSymbolExtent()**

- •

  setSymbolMinWidth()

- •

  setSymbolMaxWidth()

The extent is a size in scale coordinates, so that the symbol width is increasing when the plot is zoomed in. Minimum/Maximum width is in widget coordinates independent from the zoom level. When setting the minimum and maximum to the same value, the width of the symbol is fixed.

## Member Enumeration Documentation

### enum QwtPlotTradingCurve::Direction

Direction of a price movement.

**Enumerator**

- *Increasing*

  *The closing price is higher than the opening price.*

- *Decreasing*

  *The closing price is lower than the opening price.*

### enum QwtPlotTradingCurve::PaintAttribute

*Attributes to modify the drawing algorithm.*

**See also:**

**setPaintAttribute()***,* **testPaintAttribute()**

**Enumerator**

- *ClipSymbols*

  *Check if a symbol is on the plot canvas before painting it.*

### enum QwtPlotTradingCurve::SymbolStyle

*Symbol styles. The default setting is QwtPlotSeriesItem::CandleStick.*

**See also:**

**setSymbolStyle()***,* **symbolStyle()**

**Enumerator**

- *NoSymbol*

  *Nothing is displayed.*

- *Bar*

  *A line on the chart shows the price range (the highest and lowest prices) over one unit of time, e.g. one day or one hour. Tick marks project from each side of the line indicating the opening and closing price.*

- *CandleStick*

  *The range between opening/closing price are displayed as a filled box. The fill brush depends on the direction of the price movement. The box is connected to the highest/lowest values by lines.*

- *UserSymbol*

  *SymbolTypes \>= UserSymbol are displayed by* **drawUserSymbol()***, that needs to be overloaded and implemented in derived curve classes.*

**See also:**

**drawUserSymbol()**

## Constructor & Destructor Documentation

### QwtPlotTradingCurve::QwtPlotTradingCurve (const QString & title = `QString()`)` [explicit]`

*Constructor*

**Parameters:**

*title Title of the curve*

### QwtPlotTradingCurve::QwtPlotTradingCurve (const QwtText & title)` [explicit]`

*Constructor*

**Parameters:**

*title Title of the curve*

## Member Function Documentation

### QRectF QwtPlotTradingCurve::boundingRect () const` [virtual]`

**Returns:**

*Bounding rectangle of all samples. For an empty series the rectangle is invalid.*

*Reimplemented from* **QwtPlotSeriesItem***.*

### void QwtPlotTradingCurve::drawBar (QPainter \* painter, const QwtOHLCSample & sample, Qt::Orientation orientation, bool inverted, double width) const` [protected]`

*Draw a bar.*

**Parameters:**

*painter Qt painter, initialized with pen/brush* \
 *sample Sample, already translated into paint device coordinates* \
 *orientation Vertical or horizontal* \
 *inverted When inverted is false the open tick is painted to the left/top, otherwise it is painted right/bottom. The close tick is painted in the opposite direction of the open tick. painted in the opposite d opposite direction.* \
 *width Width or height of the candle, depending on the orientation*

**See also:**

**Bar**

### void QwtPlotTradingCurve::drawCandleStick (QPainter \* painter, const QwtOHLCSample & sample, Qt::Orientation orientation, double width) const` [protected]`

*Draw a candle stick.*

**Parameters:**

*painter Qt painter, initialized with pen/brush* \
 *sample Samples already translated into paint device coordinates* \
 *orientation Vertical or horizontal* \
 *width Width or height of the candle, depending on the orientation*

**See also:**

**CandleStick**

### void QwtPlotTradingCurve::drawSeries (QPainter \* painter, const QwtScaleMap & xMap, const QwtScaleMap & yMap, const QRectF & canvasRect, int from, int to) const` [virtual]`

*Draw an interval of the curve*

**Parameters:**

*painter Painter* \
 *xMap Maps x-values into pixel coordinates.* \
 *yMap Maps y-values into pixel coordinates.* \
 *canvasRect Contents rectangle of the canvas* \
 *from Index of the first point to be painted* \
 *to Index of the last point to be painted. If to \< 0 the curve will be painted to its last point.*

**See also:**

**drawSymbols()**

*Implements* **QwtPlotSeriesItem***.*

### void QwtPlotTradingCurve::drawSymbols (QPainter \* painter, const QwtScaleMap & xMap, const QwtScaleMap & yMap, const QRectF & canvasRect, int from, int to) const` [protected]`, ` [virtual]`

*Draw symbols*

**Parameters:**

*painter Painter* \
 *xMap x map* \
 *yMap y map* \
 *canvasRect Contents rectangle of the canvas* \
 *from Index of the first point to be painted* \
 *to Index of the last point to be painted*

**See also:**

**drawSeries()**

### void QwtPlotTradingCurve::drawUserSymbol (QPainter \* painter, SymbolStyle symbolStyle, const QwtOHLCSample & sample, Qt::Orientation orientation, bool inverted, double symbolWidth) const` [protected]`, ` [virtual]`

*Draw a symbol for a symbol style \>= UserSymbol. The implementation does nothing and is intended to be overloaded*

**Parameters:**

*painter Qt painter, initialized with pen/brush* \
 *symbolStyle Symbol style* \
 *sample Samples already translated into paint device coordinates* \
 *orientation Vertical or horizontal* \
 *inverted True, when the opposite scale ( Qt::Vertical: x, Qt::Horizontal: y ) is increasing in the opposite direction as QPainter coordinates.* \
 *symbolWidth Width of the symbol in paint device coordinates*

### QwtGraphic QwtPlotTradingCurve::legendIcon (int index, const QSizeF & size) const` [virtual]`

**Returns:**

*A rectangle filled with the color of the symbol pen*

**Parameters:**

*index Index of the legend entry ( usually there is only one )* \
 *size Icon size*

**See also:**

**setLegendIconSize()***,* **legendData()**

*Reimplemented from* **QwtPlotItem***.*

### double QwtPlotTradingCurve::maxSymbolWidth () const

**Returns:**

*Maximum for the symbol width*

**See also:**

**setMaxSymbolWidth()***,* **minSymbolWidth()***,* **symbolExtent()**

### double QwtPlotTradingCurve::minSymbolWidth () const

**Returns:**

*Minmum for the symbol width*

**See also:**

**setMinSymbolWidth()***,* **maxSymbolWidth()***,* **symbolExtent()**

### int QwtPlotTradingCurve::rtti () const` [virtual]`

**Returns:**

**QwtPlotItem::Rtti\_PlotTradingCurve**

*Reimplemented from* **QwtPlotItem***.*

### double QwtPlotTradingCurve::scaledSymbolWidth (const QwtScaleMap & xMap, const QwtScaleMap & yMap, const QRectF & canvasRect) const` [protected]`, ` [virtual]`

*Calculate the symbol width in paint coordinates*

*The width is calculated by scaling the symbol extent into paint device coordinates bounded by the minimum/maximum symbol width.*

**Parameters:**

*xMap Maps x-values into pixel coordinates.* \
 *yMap Maps y-values into pixel coordinates.* \
 *canvasRect Contents rectangle of the canvas*

**Returns:**

*Symbol width in paint coordinates*

**See also:**

**symbolExtent()***,* **minSymbolWidth()***,* **maxSymbolWidth()**

### void QwtPlotTradingCurve::setMaxSymbolWidth (double width)

*Set a maximum for the symbol width*

*A value \<= 0.0 means an unlimited width*

**Parameters:**

*width Width in paint device coordinates*

**See also:**

**maxSymbolWidth()***,* **setMinSymbolWidth()***,* **setSymbolExtent()**

### void QwtPlotTradingCurve::setMinSymbolWidth (double width)

*Set a minimum for the symbol width*

**Parameters:**

*width Width in paint device coordinates*

**See also:**

**minSymbolWidth()***,* **setMaxSymbolWidth()***,* **setSymbolExtent()**

### void QwtPlotTradingCurve::setPaintAttribute (PaintAttribute attribute, bool on = `true`)

*Specify an attribute how to draw the curve*

**Parameters:**

*attribute Paint attribute* \
 *on On/Off*

**See also:**

**testPaintAttribute()**

### void QwtPlotTradingCurve::setSamples (const QVector\< QwtOHLCSample \> & samples)

*Initialize data with an array of samples.*

**Parameters:**

*samples Vector of samples*

**See also:**

*QwtPlotSeriesItem::setData()*

### void QwtPlotTradingCurve::setSamples (QwtSeriesData\< QwtOHLCSample \> \* data)

*Assign a series of samples*

**setSamples()** *is just a wrapper for* **setData()** *without any additional value - beside that it is easier to find for the developer.*

**Parameters:**

*data Data*

**Warning:**

*The item takes ownership of the data object, deleting it when its not used anymore.*

### void QwtPlotTradingCurve::setSymbolBrush (Direction direction, const QBrush & brush)

*Set the symbol brush*

**Parameters:**

*direction Direction type* \
 *brush Brush used to fill the body of all candlestick symbols with the direction*

**See also:**

**symbolBrush()***,* **setSymbolPen()**

### void QwtPlotTradingCurve::setSymbolExtent (double extent)

*Set the extent of the symbol. The width of the symbol is given in scale coordinates. When painting a symbol the width is scaled into paint device coordinates by* **scaledSymbolWidth()***. The scaled width is bounded by* **minSymbolWidth()***,* **maxSymbolWidth()**

**Parameters:**

*extent Symbol width in scale coordinates*

**See also:**

**symbolExtent()***,* **scaledSymbolWidth()***,* **setMinSymbolWidth()***,* **setMaxSymbolWidth()**

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

*Build and assign the symbol 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 QwtPlotTradingCurve::setSymbolPen (const QPen & pen)

*Set the symbol pen. The symbol pen is used for rendering the lines of the bar or candlestick symbols*

**See also:**

**symbolPen()***,* **setSymbolBrush()**

### void QwtPlotTradingCurve::setSymbolStyle (SymbolStyle style)

*Set the symbol style*

**Parameters:**

*style Symbol style*

**See also:**

**symbolStyle()***,* **setSymbolExtent()***,* **setSymbolPen()***,* **setSymbolBrush()**

### QBrush QwtPlotTradingCurve::symbolBrush (Direction direction) const

**Parameters:**

*direction*

**Returns:**

*Brush used to fill the body of all candlestick symbols with the direction*

**See also:**

**setSymbolPen()***,* **symbolBrush()**

### double QwtPlotTradingCurve::symbolExtent () const

**Returns:**

*Extent of a symbol in scale coordinates*

**See also:**

**setSymbolExtent()***,* **scaledSymbolWidth()***,* **minSymbolWidth()***,* **maxSymbolWidth()**

### QPen QwtPlotTradingCurve::symbolPen () const

**Returns:**

*Symbol pen*

**See also:**

**setSymbolPen()***,* **symbolBrush()**

### QwtPlotTradingCurve::SymbolStyle QwtPlotTradingCurve::symbolStyle () const

**Returns:**

*Symbol style*

**See also:**

**setSymbolStyle()***,* **symbolExtent()***,* **symbolPen()***,* **symbolBrush()**

### bool QwtPlotTradingCurve::testPaintAttribute (PaintAttribute attribute) const

**Returns:**

*True, when attribute is enabled*

**See also:**

**PaintAttribute***,* **setPaintAttribute()**

## Author

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