123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- #ifndef WAVECHART_H
- #define WAVECHART_H
- /**
- * 曲线图表控件
- * 1:可设置间隔
- * 2:可设置标题
- * 3:可设置是否显示横线及坐标点
- * 4:可设置背景色文字颜色
- * 5:可设置范围值及x轴y轴步长
- * 6:暂时不支持最小值小于0的数据
- */
- #include "Common.h"
- #include "VControlObject.h"
- class SmoothCurveCreator
- {
- public:
- static QPainterPath createSmoothCurve(const QVector<QPointF>& points);
- private:
- static void calculateFirstControlPoints(double*& result, const double* rhs, int n);
- static void calculateControlPoints(const QVector<QPointF>& knots, QVector<QPointF>* firstControlPoints, QVector<QPointF>* secondControlPoints);
- };
- /// <summary>
- /// 曲线图的封装类
- /// </summary>
- class VWaveChart : public QWidget, public VControlObject
- {
- Q_OBJECT
- Q_PROPERTY(QRect geometry READ geometry WRITE setGeometry)
- Q_PROPERTY(double minValue READ getMinValue WRITE setMinValue)
- Q_PROPERTY(double maxValue READ getMaxValue WRITE setMaxValue)
- Q_PROPERTY(double xStep READ getXStep WRITE setXStep)
- Q_PROPERTY(double yStep READ getYStep WRITE setYStep)
- Q_PROPERTY(double space READ getSpace WRITE setSpace)
- Q_PROPERTY(QString title READ getTitle WRITE setTitle)
- Q_PROPERTY(bool smooth READ getSmooth WRITE setSmooth)
- Q_PROPERTY(bool showHLine READ getShowHLine WRITE setShowHLine)
- Q_PROPERTY(bool showPoint READ getShowPoint WRITE setShowPoint)
- Q_PROPERTY(bool showPointBg READ getShowPointBg WRITE setShowPointBg)
- Q_PROPERTY(QColor bgColorStart READ getBgColorStart WRITE setBgColorStart)
- Q_PROPERTY(QColor bgColorEnd READ getBgColorEnd WRITE setBgColorEnd)
- Q_PROPERTY(QColor textColor READ getTextColor WRITE setTextColor)
- Q_PROPERTY(QColor pointColor READ getPointColor WRITE setPointColor)
- public:
- explicit VWaveChart(
- QWidget* parent,
- const QPoint& pos,
- const QSize& size,
- CONTROL_PROPERTY* pProperty = nullptr
- );
- protected:
- void paintEvent(QPaintEvent *);
- void drawBg(QPainter *painter);
- void drawBox(QPainter *painter);
- void drawText(QPainter *painter);
- void drawTitle(QPainter *painter);
- void drawPoint(QPainter *painter);
- private slots:
- void updateData();
- private:
- QRectF pointRect; //绘制数据区域
- QVector<double> listData; //数据集合
- double minValue; //最小值
- double maxValue; //最大值
- double xStep; //x轴步长
- double yStep; //y轴步长
- double space; //间隔
- QString title; //标题
- bool smooth; //是否平滑
- bool showHLine; //是否显示横线
- bool showPoint; //是否显示坐标点
- bool showPointBg; //是否显示坐标背景
- QColor bgColorStart; //背景渐变开始颜色
- QColor bgColorEnd; //背景渐变结束颜色
- QColor textColor; //文字颜色
- QColor pointColor; //坐标点颜色
- public:
- double getMinValue() const;
- double getMaxValue() const;
- double getXStep() const;
- double getYStep() const;
- double getSpace() const;
- QString getTitle() const;
- bool getSmooth() const;
- bool getShowHLine() const;
- bool getShowPoint() const;
- bool getShowPointBg() const;
- QColor getBgColorStart() const;
- QColor getBgColorEnd() const;
- QColor getTextColor() const;
- QColor getPointColor() const;
- QSize sizeHint() const;
- QSize minimumSizeHint() const;
- public Q_SLOTS:
- //添加和设置数据数据
- void addData(double data);
- void setData(QVector<double> data);
- void clearData();
- //设置范围值及步长
- void setMinValue(double minValue);
- void setMaxValue(double maxValue);
- void setXStep(double xStep);
- void setYStep(double yStep);
- //设置间隔
- void setSpace(double space);
- //设置标题
- void setTitle(const QString &title);
- //设置是否平滑曲线
- void setSmooth(bool smooth);
- //设置显示横线
- void setShowHLine(bool showHLine);
- //设置显示坐标点
- void setShowPoint(bool showPoint);
- //设置显示坐标背景
- void setShowPointBg(bool showPointBg);
- //设置颜色
- void setBgColorStart(const QColor &bgColorStart);
- void setBgColorEnd(const QColor &bgColorEnd);
- void setTextColor(const QColor &textColor);
- void setPointColor(const QColor &pointColor);
- };
- #endif // WAVECHART_H
|