展开全部
[cpp] view plaincopyprint?
/*************************************************
折线图绘制
author 周翔
2012-8-14
对外提供接口
void showData(int data);接受外部的折线数据
void setSingleUnitX(const int &value);设置x轴的单位像素
void startUpdataTimer(int msecond);定时器32313133353236313431303231363533e4b893e5b19e31333337393532更新折线图
void stopUpdataTimer();关闭定时器
*************************************************/
#ifndef LINEGRAPHWIDGET_H
#define LINEGRAPHWIDGET_H
#include
#include
#include
#include
//#include
#include
struct point
{
int x;
int y;
};
class LineGraphWidget : public QWidget
{
Q_OBJECT
public:
//mix和max为折线的y轴的数据范围
explicit LineGraphWidget(int min, int max, QWidget *parent = 0);
void setSingleUnitX(const int &value) {singleUnitX = value;}//设置x轴的一个单位占多少个像素,默认10
//支持定时器定时更新
void startUpdataTimer(int msecond);
void stopUpdataTimer();
signals:
//支持实时更新
void newDataCome();//有新数据到来时发出的折线图更新信号
public slots:
/**
* @brief showData
* @param adress 地址
* @param _data 数据
*/
void showData(const QString& adress,int _data);//接受来之外部的数据
/**
* @brief slt_showData 接受外部数据
* @param name 设备名
* @param _data 数据
*/
void slt_showData(ushort name,int _data);
protected:
void paintEvent(QPaintEvent *);
void resizeEvent(QResizeEvent *e);
private:
QString m_currentNodeAdress;//当前显示的节点的地址
ushort m_currentNodeName;//当前节点的设备名
QList xList;
QList yList;
int Counter;
//窗口的长和宽
int widgetX;
int widgetY;
//折线图的显示范围
int rangeMin;
int rangeMax;
//根据窗口和范围得出的单位长,x轴,y轴
int singleUnitX;
int singleUnitY;
//根据窗口得出的多少个单位,x轴,y轴
int sumUnitX;
int sumUnitY;
point basePoint;//折线图的原点
point xAxisEndPoint;//X轴的终点
point yAxisEndPoint;//Y轴的终点
QTimer *timer;
void getSumUnitX();
void getSingleUnitY();
void initGraph();
void flush();//数据传入的节点不是现在的当前的节点的时候,刷新画面,清除所有的值
};