QWT API (中文) 7.0.1
Qt绘图库 - 中文API文档
载入中...
搜索中...
未找到
qwt_plot_curve.h
1/******************************************************************************
2 * Qwt Widget Library
3 * Copyright (C) 1997 Josef Wilgen
4 * Copyright (C) 2002 Uwe Rathmann
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the Qwt License, Version 1.0
8 *
9 * Modified by ChenZongYan in 2024 <czy.t@163.com>
10 * Summary of major modifications (see ChangeLog.md for full history):
11 * 1. CMake build system & C++11 throughout.
12 * 2. Core panner/ zoomer refactored:
13 * - QwtPanner → QwtCachePanner (pixmap-cache version)
14 * - New real-time QwtPlotPanner derived from QwtPicker.
15 * 3. Zoomer supports multi-axis.
16 * 4. Parasite-plot framework:
17 * - QwtFigure, QwtPlotParasiteLayout, QwtPlotTransparentCanvas,
18 * - QwtPlotScaleEventDispatcher, built-in pan/zoom on axis.
19 * 5. New picker: QwtPlotSeriesDataPicker (works with date axis).
20 * 6. Raster & color-map extensions:
21 * - QwtGridRasterData (2-D table + interpolation)
22 * - QwtLinearColorMap::stopColors(), stopPos() API rename.
23 * 7. Bar-chart: expose pen/brush control.
24 * 8. Amalgamated build: single QwtPlot.h / QwtPlot.cpp pair in src-amalgamate.
25 *****************************************************************************/
26
27#ifndef QWT_PLOT_CURVE_H
28#define QWT_PLOT_CURVE_H
29
30#include "qwt_global.h"
31#include "qwt_plot_seriesitem.h"
32
33#include <qstring.h>
34
35class QwtScaleMap;
36class QwtSymbol;
37class QwtCurveFitter;
38template< typename T >
39class QwtSeriesData;
40class QwtText;
41class QPainter;
42class QPolygonF;
43class QPen;
44
98class QWT_EXPORT QwtPlotCurve : public QwtPlotSeriesItem, public QwtSeriesStore< QPointF >
99{
100public:
113 {
123 NoCurve = -1,
124
138
150
164
180
193 UserCurve = 100
194 };
195
208 {
220 Inverted = 0x01,
221
243 Fitted = 0x02
244 };
245
246 Q_DECLARE_FLAGS(CurveAttributes, CurveAttribute)
247
248
263 {
274 LegendNoAttribute = 0x00,
275
286 LegendShowLine = 0x01,
287
297 LegendShowSymbol = 0x02,
298
309 LegendShowBrush = 0x04
310 };
311
312 Q_DECLARE_FLAGS(LegendAttributes, LegendAttribute)
313
314
328 {
341 ClipPolygons = 0x01,
342
357 FilterPoints = 0x02,
358
371 MinimizeMemory = 0x04,
372
388 ImageBuffer = 0x08,
389
431 FilterPointsAggressive = 0x10,
432 };
433
434 Q_DECLARE_FLAGS(PaintAttributes, PaintAttribute)
435
436// Constructor
437explicit QwtPlotCurve(const QString& title = QString());
438
439 // Constructor with QwtText title
440explicit QwtPlotCurve(const QwtText& title);
441
442 // Destructor
443virtual ~QwtPlotCurve();
444
445 // Get the runtime type information
446virtual int rtti() const override;
447
448 // Set paint attribute
449void setPaintAttribute(PaintAttribute, bool on = true);
450
451 // Test paint attribute
452bool testPaintAttribute(PaintAttribute) const;
453
454 // Set legend attribute
455void setLegendAttribute(LegendAttribute, bool on = true);
456
457 // Test legend attribute
458bool testLegendAttribute(LegendAttribute) const;
459
460 // Set legend attributes
461void setLegendAttributes(LegendAttributes);
462
463 // Get legend attributes
464LegendAttributes legendAttributes() const;
465
466// Set raw samples from double arrays
467void setRawSamples(const double* xData, const double* yData, int size);
468
469 // Set raw samples from float arrays
470void setRawSamples(const float* xData, const float* yData, int size);
471
472 // Set raw samples from double array (y-axis only)
473void setRawSamples(const double* yData, int size);
474
475 // Set raw samples from float array (y-axis only)
476void setRawSamples(const float* yData, int size);
477
478 // Set samples from double arrays
479void setSamples(const double* xData, const double* yData, int size);
480
481 // Set samples from float arrays
482void setSamples(const float* xData, const float* yData, int size);
483
484 // Set samples from double array (y-axis only)
485void setSamples(const double* yData, int size);
486
487 // Set samples from float array (y-axis only)
488void setSamples(const float* yData, int size);
489
490 // Set samples from QVector<double> (y-axis only)
491void setSamples(const QVector< double >& yData);
492
493 // Set samples from QVector<float> (y-axis only)
494void setSamples(const QVector< float >& yData);
495
496 // Set samples from QVector<double> arrays
497void setSamples(const QVector< double >& xData, const QVector< double >& yData);
498
499 // Set samples from QVector<float> arrays
500void setSamples(const QVector< float >& xData, const QVector< float >& yData);
501
502 // Set samples from rvalue QVector<double> arrays
503void setSamples(QVector< double >&& xData, QVector< double >&& yData);
504
505 // Set samples from rvalue QVector<float> arrays
506void setSamples(QVector< float >&& xData, QVector< float >&& yData);
507
508 // Set samples from rvalue QVector<QPointF>
509void setSamples(QVector< QPointF >&&);
510
511 // Set samples from QVector<QPointF>
512void setSamples(const QVector< QPointF >&);
513
514 // Set samples from QwtSeriesData
515void setSamples(QwtSeriesData< QPointF >*);
516
517// Find the closest point to a position
518virtual int closestPoint(const QPointF& pos, double* dist = nullptr) const;
519
520 // Get minimum x value
521double minXValue() const;
522
523 // Get maximum x value
524double maxXValue() const;
525
526 // Get minimum y value
527double minYValue() const;
528
529 // Get maximum y value
530double maxYValue() const;
531
532 // Set curve attribute
533void setCurveAttribute(CurveAttribute, bool on = true);
534
535 // Test curve attribute
536bool testCurveAttribute(CurveAttribute) const;
537
538 // Set pen
539void setPen(const QColor&, qreal width = 0.0, Qt::PenStyle = Qt::SolidLine);
540
541 // Set pen
542void setPen(const QPen&);
543
544 // Get pen
545const QPen& pen() const;
546
547 // Set brush
548void setBrush(const QBrush&);
549
550 // Get brush
551const QBrush& brush() const;
552
553 // Set baseline
554void setBaseline(double);
555
556 // Get baseline
557double baseline() const;
558
559 // Set curve style
560void setStyle(CurveStyle style);
561
562 // Get curve style
563CurveStyle style() const;
564
565 // Set symbol
566void setSymbol(QwtSymbol*);
567
568 // Get symbol
569const QwtSymbol* symbol() const;
570
571 // Set curve fitter
572void setCurveFitter(QwtCurveFitter*);
573
574 // Get curve fitter
575QwtCurveFitter* curveFitter() const;
576
577 // Draw the series
578virtual void drawSeries(QPainter*,
579 const QwtScaleMap& xMap,
580 const QwtScaleMap& yMap,
581 const QRectF& canvasRect,
582 int from,
583 int to) const override;
584
585 // Get the legend icon
586virtual QwtGraphic legendIcon(int index, const QSizeF&) const override;
587
588protected:
594void init();
595
601virtual void drawCurve(QPainter*,
602 int style,
603 const QwtScaleMap& xMap,
604 const QwtScaleMap& yMap,
605 const QRectF& canvasRect,
606 int from,
607 int to) const;
608
614virtual void drawSymbols(QPainter*,
615 const QwtSymbol&,
616 const QwtScaleMap& xMap,
617 const QwtScaleMap& yMap,
618 const QRectF& canvasRect,
619 int from,
620 int to) const;
621
627virtual void
628 drawLines(QPainter*, const QwtScaleMap& xMap, const QwtScaleMap& yMap, const QRectF& canvasRect, int from, int to) const;
629
635virtual void
636 drawSticks(QPainter*, const QwtScaleMap& xMap, const QwtScaleMap& yMap, const QRectF& canvasRect, int from, int to) const;
637
643virtual void
644 drawDots(QPainter*, const QwtScaleMap& xMap, const QwtScaleMap& yMap, const QRectF& canvasRect, int from, int to) const;
645
651virtual void
652 drawSteps(QPainter*, const QwtScaleMap& xMap, const QwtScaleMap& yMap, const QRectF& canvasRect, int from, int to) const;
653
659virtual void fillCurve(QPainter*, const QwtScaleMap&, const QwtScaleMap&, const QRectF& canvasRect, QPolygonF&) const;
660
666void closePolyline(QPainter*, const QwtScaleMap&, const QwtScaleMap&, QPolygonF&) const;
667
668private:
669 class PrivateData;
670 PrivateData* m_data;
671};
672
674inline double QwtPlotCurve::minXValue() const
675{
676 return boundingRect().left();
677}
678
680inline double QwtPlotCurve::maxXValue() const
681{
682 return boundingRect().right();
683}
684
686inline double QwtPlotCurve::minYValue() const
687{
688 return boundingRect().top();
689}
690
692inline double QwtPlotCurve::maxYValue() const
693{
694 return boundingRect().bottom();
695}
696
697Q_DECLARE_OPERATORS_FOR_FLAGS(QwtPlotCurve::PaintAttributes)
698Q_DECLARE_OPERATORS_FOR_FLAGS(QwtPlotCurve::LegendAttributes)
699Q_DECLARE_OPERATORS_FOR_FLAGS(QwtPlotCurve::CurveAttributes)
700
701#endif
曲线拟合算法的抽象基类
Definition qwt_curve_fitter.h:44
可缩放图形的绘制设备
Definition qwt_graphic.h:128
表示一系列点的绘图项
Definition qwt_plot_curve.h:99
CurveStyle
曲线样式
Definition qwt_plot_curve.h:113
@ Steps
Definition qwt_plot_curve.h:163
@ Sticks
Definition qwt_plot_curve.h:149
@ Lines
Definition qwt_plot_curve.h:137
@ Dots
Definition qwt_plot_curve.h:179
double minXValue() const
boundingRect().left()
Definition qwt_plot_curve.h:674
CurveAttribute
绘制曲线的属性
Definition qwt_plot_curve.h:208
double maxXValue() const
boundingRect().right()
Definition qwt_plot_curve.h:680
LegendAttribute
如何在图例上表示曲线的属性
Definition qwt_plot_curve.h:263
double minYValue() const
boundingRect().top()
Definition qwt_plot_curve.h:686
PaintAttribute
修改绘制算法的属性
Definition qwt_plot_curve.h:328
double maxYValue() const
boundingRect().bottom()
Definition qwt_plot_curve.h:692
virtual QwtGraphic legendIcon(int index, const QSizeF &) const
Return a legend icon
Definition qwt_plot_item.cpp:621
virtual int rtti() const
Runtime type information
Definition qwt_plot_item.cpp:215
表示一系列样本的绘图项的基类
Definition qwt_plot_seriesitem.h:53
virtual QRectF boundingRect() const override
获取边界矩形
Definition qwt_plot_seriesitem.cpp:174
virtual void drawSeries(QPainter *painter, const QwtScaleMap &xMap, const QwtScaleMap &yMap, const QRectF &canvasRect, int from, int to) const =0
绘制样本的子集
刻度映射
Definition qwt_scale_map.h:52
遍历样本的抽象接口
Definition qwt_series_data.h:72
存储 QwtSeriesData 对象的类
Definition qwt_series_store.h:109
用于绘制符号的类
Definition qwt_symbol.h:56
表示文本的类
Definition qwt_text.h:93