Files
pcdefenser-ui/wavechart.h
2024-04-07 19:16:05 +08:00

114 lines
3.9 KiB
C++
Executable File

#ifndef WAVECHART_H
#define WAVECHART_H
#include <QWidget>
#include <QPainterPath>
class WaveChart : public QWidget
{
Q_OBJECT
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 WaveChart(QWidget *parent = 0);
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