Qwt User's Guide  5.2.3
Public Types | Public Member Functions | Protected Member Functions
QwtPlotCurve Class Reference

#include <qwt_plot_curve.h>

Inheritance diagram for QwtPlotCurve:
Inheritance graph
[legend]

List of all members.

Public Types

enum  CurveAttribute {
  Inverted = 1,
  Fitted = 2
}
enum  CurveStyle {
  NoCurve,
  Lines,
  Sticks,
  Steps,
  Dots,
  UserCurve = 100
}
enum  CurveType {
  Yfx,
  Xfy
}
enum  PaintAttribute {
  PaintFiltered = 1,
  ClipPolygons = 2
}
- Public Types inherited from QwtPlotItem
enum  ItemAttribute {
  Legend = 1,
  AutoScale = 2
}
enum  RenderHint { RenderAntialiased = 1 }
enum  RttiValues {
  Rtti_PlotItem = 0,
  Rtti_PlotGrid,
  Rtti_PlotScale,
  Rtti_PlotMarker,
  Rtti_PlotCurve,
  Rtti_PlotHistogram,
  Rtti_PlotSpectrogram,
  Rtti_PlotSVG,
  Rtti_PlotUserItem = 1000
}

Public Member Functions

 QwtPlotCurve ()
 QwtPlotCurve (const QwtText &title)
 QwtPlotCurve (const QString &title)
virtual ~QwtPlotCurve ()
double baseline () const
virtual QwtDoubleRect boundingRect () const
const QBrush & brush () const
int closestPoint (const QPoint &pos, double *dist=NULL) const
QwtCurveFittercurveFitter () const
CurveType curveType () const
QwtDatadata ()
const QwtDatadata () const
int dataSize () const
virtual void draw (QPainter *p, const QwtScaleMap &xMap, const QwtScaleMap &yMap, const QRect &) const
virtual void draw (QPainter *p, const QwtScaleMap &xMap, const QwtScaleMap &yMap, int from, int to) const
void draw (int from, int to) const
double maxXValue () const
double maxYValue () const
double minXValue () const
double minYValue () const
const QPen & pen () const
virtual int rtti () const
void setBaseline (double ref)
void setBrush (const QBrush &)
void setCurveAttribute (CurveAttribute, bool on=true)
void setCurveFitter (QwtCurveFitter *)
void setCurveType (CurveType)
void setData (const double *xData, const double *yData, int size)
void setData (const QwtArray< double > &xData, const QwtArray< double > &yData)
void setData (const QPolygonF &data)
void setData (const QwtData &data)
void setPaintAttribute (PaintAttribute, bool on=true)
void setPen (const QPen &)
void setRawData (const double *x, const double *y, int size)
void setStyle (CurveStyle style)
void setSymbol (const QwtSymbol &s)
CurveStyle style () const
const QwtSymbolsymbol () const
bool testCurveAttribute (CurveAttribute) const
bool testPaintAttribute (PaintAttribute) const
virtual void updateLegend (QwtLegend *) const
double x (int i) const
double y (int i) const
- Public Member Functions inherited from QwtPlotItem
 QwtPlotItem (const QwtText &title=QwtText())
virtual ~QwtPlotItem ()
void attach (QwtPlot *plot)
void detach ()
void hide ()
QwtDoubleRect invTransform (const QwtScaleMap &, const QwtScaleMap &, const QRect &) const
bool isVisible () const
virtual void itemChanged ()
virtual QWidget * legendItem () const
QRect paintRect (const QwtScaleMap &, const QwtScaleMap &) const
QwtPlotplot () const
QwtDoubleRect scaleRect (const QwtScaleMap &, const QwtScaleMap &) const
void setAxis (int xAxis, int yAxis)
void setItemAttribute (ItemAttribute, bool on=true)
void setRenderHint (RenderHint, bool on=true)
void setTitle (const QString &title)
void setTitle (const QwtText &title)
virtual void setVisible (bool)
void setXAxis (int axis)
void setYAxis (int axis)
void setZ (double z)
void show ()
bool testItemAttribute (ItemAttribute) const
bool testRenderHint (RenderHint) const
const QwtTexttitle () const
QRect transform (const QwtScaleMap &, const QwtScaleMap &, const QwtDoubleRect &) const
virtual void updateScaleDiv (const QwtScaleDiv &, const QwtScaleDiv &)
int xAxis () const
int yAxis () const
double z () const
- Public Member Functions inherited from QwtLegendItemManager
 QwtLegendItemManager ()
virtual ~QwtLegendItemManager ()

Protected Member Functions

void closePolyline (const QwtScaleMap &, const QwtScaleMap &, QwtPolygon &) const
virtual void drawCurve (QPainter *p, int style, const QwtScaleMap &xMap, const QwtScaleMap &yMap, int from, int to) const
void drawDots (QPainter *p, const QwtScaleMap &xMap, const QwtScaleMap &yMap, int from, int to) const
void drawLines (QPainter *p, const QwtScaleMap &xMap, const QwtScaleMap &yMap, int from, int to) const
void drawSteps (QPainter *p, const QwtScaleMap &xMap, const QwtScaleMap &yMap, int from, int to) const
void drawSticks (QPainter *p, const QwtScaleMap &xMap, const QwtScaleMap &yMap, int from, int to) const
virtual void drawSymbols (QPainter *p, const QwtSymbol &, const QwtScaleMap &xMap, const QwtScaleMap &yMap, int from, int to) const
void fillCurve (QPainter *, const QwtScaleMap &, const QwtScaleMap &, QwtPolygon &) const
void init ()

Detailed Description

A plot item, that represents a series of points.

A curve is the representation of a series of points in the x-y plane. It supports different display styles, interpolation ( f.e. spline ) and symbols.

Usage
a) Assign curve properties
When a curve is created, it is configured to draw black solid lines with in Lines style and no symbols. You can change this by calling setPen(), setStyle() and setSymbol().
b) Connect/Assign data.
QwtPlotCurve gets its points using a QwtData object offering a bridge to the real storage of the points ( like QAbstractItemModel ). There are several convenience classes derived from QwtData, that also store the points inside ( like QStandardItemModel ). QwtPlotCurve also offers a couple of variations of setData(), that build QwtData objects from arrays internally.
c) Attach the curve to a plot
See QwtPlotItem::attach()
Example:
see examples/bode
See also:
QwtPlot, QwtData, QwtSymbol, QwtScaleMap

Member Enumeration Documentation

Attribute for drawing the curve

Curve styles.

  • NoCurve
    Don't draw a curve. Note: This doesn't affect the symbols.
  • Lines
    Connect the points with straight lines. The lines might be interpolated depending on the 'Fitted' attribute. Curve fitting can be configured using setCurveFitter().
  • Sticks
    Draw vertical(Yfx) or horizontal(Xfy) sticks from a baseline which is defined by setBaseline().
  • Steps
    Connect the points with a step function. The step function is drawn from the left to the right or vice versa, depending on the 'Inverted' attribute.
  • Dots
    Draw dots at the locations of the data points. Note: This is different from a dotted line (see setPen()), and faster as a curve in NoStyle style and a symbol painting a point.
  • UserCurve
    Styles >= UserCurve are reserved for derived classes of QwtPlotCurve that overload drawCurve() with additional application specific curve types.
See also:
setStyle(), style()

Curve type.

  • Yfx
    Draws y as a function of x (the default). The baseline is interpreted as a horizontal line with y = baseline().
  • Xfy
    Draws x as a function of y. The baseline is interpreted as a vertical line with x = baseline().

The baseline is used for aligning the sticks, or filling the curve with a brush.

See also:
setCurveType(), curveType(), baseline() brush()

Attributes to modify the drawing algorithm.

  • PaintFiltered
    Tries to reduce the data that has to be painted, by sorting out duplicates, or paintings outside the visible area. Might have a notable impact on curves with many close points. Only a couple of very basic filtering algos are implemented.
  • ClipPolygons
    Clip polygons before painting them. In situations, where points are far outside the visible area (f.e when zooming deep) this might be a substantial improvement for the painting performance ( especially on Windows ).

The default is, that no paint attributes are enabled.

See also:
setPaintAttribute(), testPaintAttribute()

Constructor & Destructor Documentation

QwtPlotCurve::QwtPlotCurve ( const QwtText title)
explicit

Constructor

Parameters:
titleTitle of the curve
QwtPlotCurve::QwtPlotCurve ( const QString &  title)
explicit

Constructor

Parameters:
titleTitle of the curve

Member Function Documentation

double QwtPlotCurve::baseline ( ) const

Return the value of the baseline

See also:
setBaseline()
QwtDoubleRect QwtPlotCurve::boundingRect ( ) const
virtual

Returns the bounding rectangle of the curve data. If there is no bounding rect, like for empty data the rectangle is invalid.

See also:
QwtData::boundingRect(), QwtDoubleRect::isValid()

Reimplemented from QwtPlotItem.

const QBrush & QwtPlotCurve::brush ( ) const

Return the brush used to fill the area between lines and the baseline.

See also:
setBrush(), setBaseline(), baseline()
void QwtPlotCurve::closePolyline ( const QwtScaleMap xMap,
const QwtScaleMap yMap,
QwtPolygon &  pa 
) const
protected

Complete a polygon to be a closed polygon including the area between the original polygon and the baseline.

Parameters:
xMapX map
yMapY map
paPolygon to be completed
int QwtPlotCurve::closestPoint ( const QPoint &  pos,
double *  dist = NULL 
) const

Find the closest curve point for a specific position

Parameters:
posPosition, where to look for the closest curve point
distIf dist != NULL, closestPoint() returns the distance between the position and the clostest curve point
Returns:
Index of the closest curve point, or -1 if none can be found ( f.e when the curve has no points )
Note:
closestPoint() implements a dumb algorithm, that iterates over all points
QwtCurveFitter * QwtPlotCurve::curveFitter ( ) const

Get the curve fitter. If curve fitting is disabled NULL is returned.

Returns:
Curve fitter
QwtPlotCurve::CurveType QwtPlotCurve::curveType ( ) const

Return the curve type

See also:
CurveType, setCurveType()
QwtData & QwtPlotCurve::data ( )
inline
Returns:
the the curve data
const QwtData & QwtPlotCurve::data ( ) const
inline
Returns:
the the curve data
int QwtPlotCurve::dataSize ( ) const

Return the size of the data arrays

See also:
setData()
void QwtPlotCurve::draw ( QPainter *  painter,
const QwtScaleMap xMap,
const QwtScaleMap yMap,
const QRect &  canvasRect 
) const
virtual

Draw the complete curve.

Parameters:
painterPainter
xMapMaps x-values into pixel coordinates.
yMapMaps y-values into pixel coordinates.
See also:
drawCurve(), drawSymbols()

Implements QwtPlotItem.

void QwtPlotCurve::draw ( QPainter *  painter,
const QwtScaleMap xMap,
const QwtScaleMap yMap,
int  from,
int  to 
) const
virtual

Draw an interval of the curve.

Parameters:
painterPainter
xMapmaps x-values into pixel coordinates.
yMapmaps y-values into pixel coordinates.
fromindex of the first point to be painted
toindex of the last point to be painted. If to < 0 the curve will be painted to its last point.
See also:
drawCurve(), drawSymbols(),
void QwtPlotCurve::draw ( int  from,
int  to 
) const

Draw a set of points of a curve.

When observing an measurement while it is running, new points have to be added to an existing curve. drawCurve can be used to display them avoiding a complete redraw of the canvas.

Setting plot()->canvas()->setAttribute(Qt::WA_PaintOutsidePaintEvent, true); will result in faster painting, if the paint engine of the canvas widget supports this feature.

Parameters:
fromIndex of the first point to be painted
toIndex of the last point to be painted. If to < 0 the curve will be painted to its last point.
See also:
drawCurve(), drawSymbols()
void QwtPlotCurve::drawCurve ( QPainter *  painter,
int  style,
const QwtScaleMap xMap,
const QwtScaleMap yMap,
int  from,
int  to 
) const
protectedvirtual

Draw the line part (without symbols) of a curve interval.

Parameters:
painterPainter
stylecurve style, see QwtPlotCurve::CurveStyle
xMapx map
yMapy map
fromindex of the first point to be painted
toindex of the last point to be painted
See also:
draw(), drawDots(), drawLines(), drawSteps(), drawSticks()
void QwtPlotCurve::drawDots ( QPainter *  painter,
const QwtScaleMap xMap,
const QwtScaleMap yMap,
int  from,
int  to 
) const
protected

Draw dots

Parameters:
painterPainter
xMapx map
yMapy map
fromindex of the first point to be painted
toindex of the last point to be painted
See also:
draw(), drawCurve(), drawSticks(), drawLines(), drawSteps()
void QwtPlotCurve::drawLines ( QPainter *  painter,
const QwtScaleMap xMap,
const QwtScaleMap yMap,
int  from,
int  to 
) const
protected

Draw lines.

If the CurveAttribute Fitted is enabled a QwtCurveFitter tries to interpolate/smooth the curve, before it is painted.

Parameters:
painterPainter
xMapx map
yMapy map
fromindex of the first point to be painted
toindex of the last point to be painted
See also:
setCurveAttribute(), setCurveFitter(), draw(), drawLines(), drawDots(), drawSteps(), drawSticks()
void QwtPlotCurve::drawSteps ( QPainter *  painter,
const QwtScaleMap xMap,
const QwtScaleMap yMap,
int  from,
int  to 
) const
protected

Draw step function

The direction of the steps depends on Inverted attribute.

Parameters:
painterPainter
xMapx map
yMapy map
fromindex of the first point to be painted
toindex of the last point to be painted
See also:
CurveAttribute, setCurveAttribute(), draw(), drawCurve(), drawDots(), drawLines(), drawSticks()
void QwtPlotCurve::drawSticks ( QPainter *  painter,
const QwtScaleMap xMap,
const QwtScaleMap yMap,
int  from,
int  to 
) const
protected

Draw sticks

Parameters:
painterPainter
xMapx map
yMapy map
fromindex of the first point to be painted
toindex of the last point to be painted
See also:
draw(), drawCurve(), drawDots(), drawLines(), drawSteps()
void QwtPlotCurve::drawSymbols ( QPainter *  painter,
const QwtSymbol symbol,
const QwtScaleMap xMap,
const QwtScaleMap yMap,
int  from,
int  to 
) const
protectedvirtual

Draw symbols.

Parameters:
painterPainter
symbolCurve symbol
xMapx map
yMapy map
fromindex of the first point to be painted
toindex of the last point to be painted
See also:
setSymbol(), draw(), drawCurve()
void QwtPlotCurve::fillCurve ( QPainter *  painter,
const QwtScaleMap xMap,
const QwtScaleMap yMap,
QwtPolygon &  pa 
) const
protected

Fill the area between the curve and the baseline with the curve brush

Parameters:
painterPainter
xMapx map
yMapy map
paPolygon
See also:
setBrush(), setBaseline(), setCurveType()
const QPen & QwtPlotCurve::pen ( ) const

Return the pen used to draw the lines.

See also:
setPen(), brush()
int QwtPlotCurve::rtti ( ) const
virtual
Returns:
QwtPlotItem::Rtti_PlotCurve

Reimplemented from QwtPlotItem.

void QwtPlotCurve::setBaseline ( double  reference)

Set the value of the baseline.

The baseline is needed for filling the curve with a brush or the Sticks drawing style. The default value is 0.0. The interpretation of the baseline depends on the CurveType. With QwtPlotCurve::Yfx, the baseline is interpreted as a horizontal line at y = baseline(), with QwtPlotCurve::Yfy, it is interpreted as a vertical line at x = baseline().

Parameters:
referencebaseline
See also:
baseline(), setBrush(), setStyle(), setCurveType()
void QwtPlotCurve::setBrush ( const QBrush &  brush)

Assign a brush.

In case of brush.style() != QBrush::NoBrush and style() != QwtPlotCurve::Sticks the area between the curve and the baseline will be filled.

In case !brush.color().isValid() the area will be filled by pen.color(). The fill algorithm simply connects the first and the last curve point to the baseline. So the curve data has to be sorted (ascending or descending).

Parameters:
brushNew brush
See also:
brush(), setBaseline(), baseline()
void QwtPlotCurve::setCurveAttribute ( CurveAttribute  attribute,
bool  on = true 
)

Specify an attribute for drawing the curve

Parameters:
attributeCurve attribute
onOn/Off

/sa CurveAttribute, testCurveAttribute(), setCurveFitter()

void QwtPlotCurve::setCurveFitter ( QwtCurveFitter curveFitter)

Assign a curve fitter setCurveFitter(NULL) disables curve fitting.

Parameters:
curveFitterCurve fitter
void QwtPlotCurve::setCurveType ( CurveType  curveType)

Assign the curve type

Parameters:
curveTypeYfx or Xfy
See also:
CurveType, curveType()
void QwtPlotCurve::setData ( const double *  xData,
const double *  yData,
int  size 
)

Set data by copying x- and y-values from specified memory blocks. Contrary to setCurveRawData(), this function makes a 'deep copy' of the data.

Parameters:
xDataPointer to x values
yDataPointer to y values
sizeSize of xData and yData
Note:
Internally the data is stored in a QwtArrayData object
void QwtPlotCurve::setData ( const QwtArray< double > &  xData,
const QwtArray< double > &  yData 
)

Initialize data with x- and y-arrays (explicitly shared) ( Builds an QwtArrayData object internally )

Parameters:
xDatax data
yDatay data
Note:
Internally the data is stored in a QwtArrayData object
void QwtPlotCurve::setData ( const QPolygonF &  data)

Initialize data with an array of points (explicitly shared).

Parameters:
dataData
Note:
Internally the data is stored in a QwtPolygonFData object
void QwtPlotCurve::setData ( const QwtData data)

Initialize data with a pointer to QwtData.

Parameters:
dataData
See also:
QwtData::copy()
void QwtPlotCurve::setPaintAttribute ( PaintAttribute  attribute,
bool  on = true 
)

Specify an attribute how to draw the curve

Parameters:
attributePaint attribute
onOn/Off /sa PaintAttribute, testPaintAttribute()
void QwtPlotCurve::setPen ( const QPen &  pen)

Assign a pen

The width of non cosmetic pens is scaled according to the resolution of the paint device.

Parameters:
penNew pen
See also:
pen(), brush(), QwtPainter::scaledPen()
void QwtPlotCurve::setRawData ( const double *  xData,
const double *  yData,
int  size 
)

Initialize the data by pointing to memory blocks which are not managed by QwtPlotCurve.

setRawData is provided for efficiency. It is important to keep the pointers during the lifetime of the underlying QwtCPointerData class.

Parameters:
xDatapointer to x data
yDatapointer to y data
sizesize of x and y
Note:
Internally the data is stored in a QwtCPointerData object
void QwtPlotCurve::setStyle ( CurveStyle  style)

Set the curve's drawing style

Parameters:
styleCurve style
See also:
CurveStyle, style()
void QwtPlotCurve::setSymbol ( const QwtSymbol symbol)

Assign a symbol.

Parameters:
symbolSymbol
See also:
symbol()
QwtPlotCurve::CurveStyle QwtPlotCurve::style ( ) const

Return the current style

See also:
CurveStyle, setStyle()
const QwtSymbol & QwtPlotCurve::symbol ( ) const

Return the current symbol.

See also:
setSymbol()
bool QwtPlotCurve::testCurveAttribute ( CurveAttribute  attribute) const
Returns:
true, if attribute is enabled
See also:
CurveAttribute, setCurveAttribute()
bool QwtPlotCurve::testPaintAttribute ( PaintAttribute  attribute) const

Return the current paint attributes.

See also:
PaintAttribute, setPaintAttribute()
double QwtPlotCurve::x ( int  i) const
inline
Parameters:
iindex
Returns:
x-value at position i
double QwtPlotCurve::y ( int  i) const
inline
Parameters:
iindex
Returns:
y-value at position i