1354094021_8025  

       qwt下的realtime工程

 

環境:vs2010,qt4.7.4,qt-vs-addin-1.1.11-opensource.,qwt6.0.1,操作系統win7

一、QWT簡介

 

  QWT,全稱是Qt Widgets for Technical Applications,是一個基於LGPL版權協議的開源項目, 可生成各種統計圖。它为具有技術專業背景的程序提供GUI組件和一組實用類,其目標是以基於2D方式的窗體部件來顯示數據, 數據源以數值,數組或一組浮點數等方式提供, 輸出方式可以是Curves(曲線),Slider(滾動條),Dials(圓盤),Compasses(儀表盤)等等。該工具庫基於Qt開發,所以也繼承了Qt的跨平台特性。

二、環境搭建

      qt4.7與vs2010的整合以及qwt的編譯與安裝,網上資料都很多,大家先参考把環境搭好

     (1) qt4.7在vs2010下的編譯

       需要注意的是不取消demos和examples編譯,編譯空間需要20G以上,而且非常耗時,建議取消。我編譯時也沒遇到錯誤,比較順利,可能版本的問題吧。

      (2)qwt6.0.1的編譯

 

三、新建一個qt工程

        在vs2010環境下,先建一個qt主窗口工程

       需要注意的是,新建後在項目熟悉中,預處理器定義中得加上QWT_DLL

四、創建自己的QwtPlot

 (1)     增加一個類比如curvePlotWidget,繼承自QwtPlot

(2)代碼示例

curvePlotWidget::curvePlotWidget(QWidget *parent)
 : QwtPlot(parent)
{
 ui.setupUi(this);

 

//設置一些窗口熟悉
 setFrameStyle(QFrame::NoFrame);
 setLineWidth(0);
 setCanvasLineWidth(2);

 plotLayout()->setAlignCanvasToScales(true);

//增加網格

 QwtPlotGrid *grid = new QwtPlotGrid;
 grid->setMajPen(QPen(Qt::gray, 0, Qt::DotLine));
 grid->attach(this);

//設置畫布背景

 setCanvasBackground(QColor(29, 100, 141)); // nice blue

//設置X與Y坐標範圍
 setAxisScale(xBottom, 1, 75);
 setAxisScale(yLeft, -1, 1);

//

//新建一個曲線對象
 QwtPlotCurve *pCurve=new QwtPlotCurve("curve1");

 

//輸入數據

 QVector< double > xData;

 QVector<double> yData;

 for(int i=0;i<75;++i)
  xData.push_back(i+1);

 yData<<1<<0.048634<<0.655211<<0.320122<<0.130912<<0.182503<<0.163217<<0.167857<<0.169706<<0.15244<<0.17136<<0.184516<<0.183185<<0.16788<<0.150819<<0.154223<<0.149134<<0.126398<<0.090325<<-0.017047<<0.184973<<0.113727<<0.072852<<0.054324<<0.04943<<0.036473<<0.042876<<0.048972<<0.04963<<0.052114<<0.056796<<0.060517<<0.07844<<0.066472<<0.079221<<0.06061<<-0.018855<<0.457584<<0.104125<<0.282665<<0.066127<<0.064099<<0.065944<<0.013025<<0.054401<<0.027663<<0.038911<<0.03153<<0.040123<<0.038832<<0.03919<<0.048258<<0.050396<<0.063897<<0.062202<<0.067778<<0.074743<<0.063545<<0.066624<<0.09162<<-0.022548<<0.037526<<0.04687<<0.04425<<0.046449<<0.038345<<0.051492<<0.033624<<0.030668<<0.075395<<-0.016367<<-0.039846<<0.021928<<0<<0;


 pCurve->setSamples(xData,yData);

 pCurve->attach(this);

//設置曲線顏色
 QPen pen;
 pen.setColor(QColor(255,0,0));

 pCurve->setPen(pen);
 
 //QwtPlotCurve::PaintAttribute

//抗鋸齒

   pCurve->setRenderHint(QwtPlotItem::RenderAntialiased,true);

 

//增加縮放功能

 QwtPlotZoomer  *pZoomer= new QwtPlotZoomer(canvas());

   pZoomer->setRubberBandPen(QPen(Qt::red));

//重繪

replot();
}

 

 

 

 

 

 


From:CSDN        

 




創作者介紹
創作者 shadow 的頭像
shadow

資訊園

shadow 發表在 痞客邦 留言(0) 人氣()