《Qt绘图 使用QWT绘制科学图表、绘图.docx》由会员分享,可在线阅读,更多相关《Qt绘图 使用QWT绘制科学图表、绘图.docx(5页珍藏版)》请在优知文库上搜索。
1、QWt是一个基于1.GP1.版权协议的开派项目,其目标是供应组2D的囱体库显示技术领域的数据.数抠源以浮点数组或范围的方式供血,珀出方式可以是CUrVeS(曲线),Slider(滚动条),DiaIS(圆盘),8mpasses(仪去盘)等等。该工具库菸于CH开发,所以也绢承了Qt的跨平台特性,据原作者文档所说,该项目在Qt-winO-x11/QbembeddedIqVfb环境)上都测试过,运行正常.项目的主页在:在网上搜了一下,发觉关于qwt的中文资料实在很少,基本上只有关于漏谛和安装的文章.事实上经过笔者实践.QWt的编译和运行实在乏善可陈,qmakamake就可以搞定.没什么可mem。的东西
2、,所以这篇文章将以扫白为主,介绍QWt的feature当然根据正常的依次,我们还是从编译安装起先”从SVn服务器上下我最新代码:SVneo进入qwtH日,运行你电脑上qt4对应的qmake,再运行make编译,如笔者环境中是Scdqwt$exportPATH=usrlocal,TrolltechlQt4.5.1.bin/:SPATH$qmake$make编译要花个几分钟的时间,胜利后在Iib不会生成IigwtSO文件,并且examples也参加编译,生成的binary在exampesin下,我们可以运行这些例子初步杳石qwt的功能,SeXPOrt1.D_UBRARY_PATH=$PWDmbSC
3、dexamplesbin$./simpleSimPle是qwt自带的例子中最简洁的一个,一共只有一百来行的代码,实现了数学中的正弦函数(Sino)和余弦函数(8S()曲线.如下图:这个例子里用到的核心类彳了四个(以下内容是他者的理斛,有可能彳j不对的地方,清酌情阅读):OwtPIot类似一个2D绘图的容涔,里面可以放及他的QWlPIoMem派生类对象,比如本例f中运用的QwtPIotMarker格):setAxisScale(xBottom,0.0.10.0)H横坐标从0到10.XBottom衣示横坐标的方向从卜往上setAxisTitle(y1.ft,*y-);setAxisScae(y1.
4、ft,-i.,1O);纵坐标一1到1.y1.efl我示纵坐标的方向从左到右2、潦加正弦余弦曲线UInsertnewcurvesQwtPIotCurve,cSin=newQwtPlotCurve(y=sin();#ifQT_VERSION=0040000cSin-setRenderHint(QwtPlotltem::RenderAntialiased);#endifCSin-setPen(QPen(Qt:red);/红色llll线cSiattach(this);QvrtPIotCurve*cCos=newQwtPlotCurve(y=s(x):#ifQT,VERSION=0040000cCos-
5、setRerxirHint(QwtPlotitem:RenderAntiaIiaSed);#endifCCOS-setPen(QPen(Qt:blue)y/收色曲线cCos-a11ach(this);3、设置曲线的数据内容UCreatesinandcosdatacSin-setData(FunctonData(:sin);cCos-setData(FunctionData(:cos);4、添加横纵标尺级作为坐标的参照/InsertmarkersU.ahorizontallineaty=O.QwtPIOtMarker,mY=newQwtPIotMarkerO;mY-set1.abel(QStri
6、ng:from1.atin1(y=O*);mY-set1.abelAlignment(Qt:AlignRight|Qt:AlignTop);mY-set1.ineStyle(QwtPlotMarker:HiJne)*般的方向mYsYValue(O.O)y/标尺线住在y=0的位置mY-attach(this);H.averticallineatx=2,piQvztPIotMarker,m-newQwtPIotMarkerO;mX-set1.abel(QString:from1.atin1(x=2pi):mX-set1.ablAlignmnt(Qt:IAIign1.eftQtAlignBottom
7、);mX-sei1.abelOrientation(Qt:Vertical);mX-set1.ineStyle(QwtPIotMarkeriiV1.ine):mX-set1.inePen(QPen(Qt:black.O,QtQashDot1.ine);mX-setXValu(2.0,M_PI)W该标线画在x-2PI的位置m-attach(this);同样的功能假如用Qt来写的话须要号大量的绘图代码,比较麻烦,但运用QWl的封装库代码更00I1.更简洁理解和维护,在这个例了中运用Qwt的优势体现得可能还不太明显,相比而言图难,些的图表更能体现QWt的优超性。再来几个例子的裁图:Xbode,v*ZmPMtMGDampingFactor0仝会FrequencyResponseofaSecond-OrderSystemlpipn一dEVAmplitudePhaseCursorPos:PressleftmousebuttonInplotregion怎么样,这几个例子还是满炫的吧?总的来说这个库的好用性还是比较强的,值得试.有爱好的同学不妨也下载卜来自己玩一玩。