71 lines
1.4 KiB
C++
71 lines
1.4 KiB
C++
#ifndef DRAWWAVEVIEW_H
|
|
#define DRAWWAVEVIEW_H
|
|
|
|
#include <QWidget>
|
|
#include <QPaintEvent>
|
|
//水平线条数
|
|
#define D_HOR_LIENS 4//5
|
|
//垂直线条数
|
|
#define D_VER_LINES 8//10
|
|
//视图边距
|
|
#define D_VIEW_MARGIN_LEFT 80//左、下边界
|
|
#define D_VIEW_MARGIN_BOTTOM 30//左、下边界
|
|
#define D_VIEW_MARGIN_RIGHT 40//右、上边界
|
|
#define D_VIEW_MARGIN_TOP 25//上边界
|
|
|
|
|
|
class DrawWaveView : public QWidget
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
explicit DrawWaveView(QWidget *parent = nullptr);
|
|
//QRect widgetRec;
|
|
float m_Ymax,m_Ymin;
|
|
float m_Xmin,m_Xmax;
|
|
void initView();
|
|
void setValues(float *values);
|
|
void setCount(int count);
|
|
void setTime(int time);
|
|
void setXGrid(int xGrid);//X轴网格数
|
|
void setYGrid(int yGrid);//Y轴网格数
|
|
signals:
|
|
|
|
public slots:
|
|
|
|
// QWidget interface
|
|
protected:
|
|
virtual void paintEvent(QPaintEvent *evt);
|
|
|
|
private:
|
|
//绘制坐标
|
|
void drawCoord(QPainter *painter);
|
|
//绘制水平网格
|
|
void drawHorlines(QPainter *painter);
|
|
//绘制垂直网格
|
|
void drawVerLines(QPainter *painter);
|
|
//波列数据转换为图像坐标
|
|
QPointF coordWavePoint(int ix,float value);
|
|
//绘制波列数据点
|
|
void drawDataPoints(QPainter *painter);
|
|
|
|
private:
|
|
float *m_values;
|
|
int m_count;
|
|
int m_time;
|
|
int m_xGrid,m_yGrid;
|
|
bool isInit;
|
|
float m_xGridValue;
|
|
float m_yGridValue;
|
|
|
|
float m_hGridWidth;
|
|
float m_vGridHeight;
|
|
|
|
float m_width;
|
|
float m_height;
|
|
|
|
float m_pixXValue;
|
|
float m_pixYValue;
|
|
};
|
|
|
|
#endif // DRAWWAVEVIEW_H
|