基于Qwt的Qt客户端

来源:互联网 发布:php 闭包 use 多参数 编辑:程序博客网 时间:2024/06/05 07:29

       先来无事,遂研究下qwt编程,其实去年我已经将qwt编译好了,只是到现在才拿出来试试。

       首先建一个Qt-widget工程

       将qwt库加入到pro里面,本项目内容如下:

DEFINES += QWT_DLLCONFIG += qwtLIBS +=-L"C:\Qt\Qt5.2.0\5.2.0\mingw48_32\qtwlib\qwt-6.1.0\lib" -lqwtdINCLUDEPATH +=C:\Qt\Qt5.2.0\5.2.0\mingw48_32\include\QWT\src       //换上你自己QWT路径
       当然你也得改成你的qwt编译好的路径,关于如何编译,看客可以google搜罗

       基于btc38提供了开放api,详见 http://www.btc38.com/general/789.html

       想写个图形显示当前比特币的走势图,遂拿qwt来做个简单的演示

       主要看一个图形类 QwtPlot

        代码:

#ifndef CURVEPLOTWIDGET_H#define CURVEPLOTWIDGET_H#include <qwt.h>#include <qwt_plot.h>#include <qwt_plot_curve.h>#include <qwt_plot_magnifier.h>#include <qwt_plot_panner.h>#include <qwt_legend.h>#include <qwt_point_data.h>#include <qwt_plot_grid.h>#include <qwt_plot_layout.h>#include <qwt_plot_zoomer.h>#include <QString>#include <QPen>#include <QWidget>class curvePlotWidget : public QwtPlot{public:    curvePlotWidget(QWidget *parent=0);    QVector< double > x_Data;    QVector<double> y_Data;    QwtPlotCurve *pCurve;    void addData(QStringList,QStringList);    qint64 iCount;};#endif // CURVEPLOTWIDGET_H
.cpp

#include "curveplotwidget.h"curvePlotWidget::curvePlotWidget(QWidget *parent)    : QwtPlot(parent),y_Data(0.0),x_Data(0.0),pCurve(NULL),iCount(0){    //设置一些窗口熟悉    setFrameStyle(QFrame::NoFrame);    setLineWidth(0);    setWindowOpacity(0.8);    plotLayout()->setAlignCanvasToScales(true);    //增加网格    QwtPlotGrid *grid = new QwtPlotGrid;    grid->setMajorPen(QPen(Qt::yellow, 0, Qt::DotLine));    grid->attach(this);    //设置画布背景    setCanvasBackground(QColor(55, 100, 141)); // nice blue    //设置X与Y坐标范围    setAxisScale(xBottom, 1, 100);    setAxisScale(yLeft, -1, 1);}void curvePlotWidget::addData(QStringList xList,QStringList yList){    //输入数据    iCount ++;    x_Data.clear();    y_Data.clear();    //新建一个曲线对象    if(pCurve == NULL)    {      pCurve=new QwtPlotCurve("curve1");    }    int iCount1 = xList.at(0).toInt();    for(int i=0;i<iCount1;++i)        x_Data.push_back(i+1);    for(int ii = 0;ii<yList.count();ii++)    {        y_Data<<yList.at(ii).toDouble();    }   //y_Data    float maxdata=y_Data[0];    int len=y_Data.size(),i;  //a.size() 求得向量当前存储数量    for(i=1;i<len;i++)    {        if (y_Data[i]>maxdata)            maxdata=y_Data[i];    }    setAxisScale(yLeft, -maxdata, maxdata);    //qDebug()<<"x_Data "<<x_Data<<"\n"<<maxdata;    qDebug()<<"\ny_Data: "<<y_Data;    pCurve->setSamples(x_Data,y_Data);    pCurve->attach(this);    //设置曲线颜色    QPen pen;    if(iCount%2 == 0)    {        pen.setColor(QColor(255,244,12));    }else{        pen.setColor(QColor(0,244,255));    }    pCurve->setPen(pen);    //抗锯齿    pCurve->setRenderHint(QwtPlotItem::RenderAntialiased,true);    //增加缩放功能    //QwtPlotZoomer  *pZoomer= new QwtPlotZoomer(canvas());    //pZoomer->setRubberBandPen(QPen(Qt::red));    //重绘    replot();}

基于这个图形类,可以将其到主进程进行实例之

    效果如下:

    

0 0