Qt繪圖 使用QWT繪制科學(xué)圖表繪圖_第1頁(yè)
Qt繪圖 使用QWT繪制科學(xué)圖表繪圖_第2頁(yè)
Qt繪圖 使用QWT繪制科學(xué)圖表繪圖_第3頁(yè)
Qt繪圖 使用QWT繪制科學(xué)圖表繪圖_第4頁(yè)
Qt繪圖 使用QWT繪制科學(xué)圖表繪圖_第5頁(yè)
已閱讀5頁(yè),還剩1頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Qwt是一個(gè)基于LGPL版權(quán)協(xié)議的開(kāi)源項(xiàng)目, 其目標(biāo)是提供一組2D的窗體庫(kù)顯示技術(shù)領(lǐng)域的數(shù)據(jù), 數(shù)據(jù)源以浮點(diǎn)數(shù)組或范圍的方式提供, 輸出方式可以是Curves(曲線),Slider(滾動(dòng)條), Dials(圓盤(pán)), compasses(儀表盤(pán))等等。 該工具庫(kù)基于Qt開(kāi)發(fā), 所以也繼承了Qt的跨平臺(tái)特性, 據(jù)原作者文檔所說(shuō), 該項(xiàng)目在Qt-win/Qt-x11/Qt-embedded(qvfb環(huán)境)上都測(cè)試過(guò), 運(yùn)行正常。 項(xiàng)目的主頁(yè)在:在網(wǎng)上搜了一下, 發(fā)現(xiàn)關(guān)于qwt的中文資料實(shí)在很少, 基本上只有關(guān)于編譯和安裝的文章。 實(shí)際上經(jīng)過(guò)筆者實(shí)踐, Qwt的編譯和運(yùn)行實(shí)在乏善可陳, qmake;m

2、ake就可以搞定, 沒(méi)什么可memo的東西, 所以這篇文章將以?huà)呙橹鳎?介紹Qwt的feature。當(dāng)然按照正常的順序, 我們還是從編譯安裝開(kāi)始。 從svn服務(wù)器上下載最新代碼:svn co進(jìn)入qwt目錄, 運(yùn)行你電腦上qt4對(duì)應(yīng)的qmake, 再運(yùn)行make編譯。如筆者環(huán)境中是$ cd qwt$ export PATH=/usr/local/Trolltech/Qt-4.5.1/bin/:$PATH$ qmake$ make編譯要花個(gè)幾分鐘的時(shí)間。 成功后在lib下會(huì)生成 libqwt.so*文件, 并且examples也參與編譯, 生成的binary在examples/bin下, 我們可

3、以運(yùn)行這些例子初步查看qwt的功能。$export LD_LIBRARY_PATH=$PWD/lib$cd examples/bin$ ./simplesimple是qwt自帶的例子中最簡(jiǎn)單的一個(gè), 一共只有一百來(lái)行的代碼, 實(shí)現(xiàn)了數(shù)學(xué)中的正弦函數(shù)(sin()和余弦函數(shù)(cos()曲線。 如下圖:這個(gè)例子里用到的核心類(lèi)有四個(gè)(以下內(nèi)容是筆者的理解, 有可能有不對(duì)的地方, 請(qǐng)酌情閱讀):QwtPlot類(lèi)似一個(gè)2D繪圖的容器, 里面可以放其他的QwtPlotItem派生類(lèi)對(duì)象, 比如本例子中使用的QwtPlotMarker等。(有點(diǎn)類(lèi)似Qt里的graphicsview的感覺(jué)。) 這個(gè)類(lèi)負(fù)

4、責(zé)控制繪圖數(shù)據(jù)的產(chǎn)生和傳遞, 并且繪制一個(gè)坐標(biāo)軸。QwtPlotMarker標(biāo)尺類(lèi), 用于繪制刻度線。QwtPlotCurve曲線類(lèi), 用于繪制各種曲線。QwtSyntheticPointData比較奇怪, 這是個(gè)undocumented的類(lèi), 估計(jì)不小心被作者遺漏了, 文檔中沒(méi)有提供該類(lèi)的說(shuō)明, 只能從源碼中尋找答案了, 這一點(diǎn)很讓人郁悶。 通過(guò)看code當(dāng)中的注釋和例子代碼, 筆者的理解是該類(lèi)負(fù)責(zé)產(chǎn)生數(shù)據(jù), 它的作用是提供固定數(shù)量的浮點(diǎn)數(shù)的點(diǎn), 點(diǎn)的數(shù)量在構(gòu)造類(lèi)時(shí)傳入。 獲取數(shù)據(jù)時(shí)QwtPlotCurve類(lèi)會(huì)調(diào)用該類(lèi)的y()方法獲取縱坐標(biāo)。程序的基本流程是:1、初始化繪圖容器, 設(shè)置坐標(biāo)軸

5、的參數(shù)/ Set axessetAxisTitle(xBottom, “x >”);setAxisScale(xBottom, 0.0, 10.0);/橫坐標(biāo)從0到10, xBottom表示橫坐標(biāo)的方向從下往上setAxisTitle(yLeft, “y >”);setAxisScale(yLeft, -1.0, 1.0); /縱坐標(biāo)1到1,yLeft表示縱坐標(biāo)的方向從左到右2、添加正弦余弦曲線/ Insert new curvesQwtPlotCurve *cSin = new QwtPlotCurve(”y = sin(x)”);#if QT_VERSION

6、 >= 0×040000cSin->setRenderHint(QwtPlotItem:RenderAntialiased);#endifcSin->setPen(QPen(Qt:red);/紅色曲線cSin->attach(this);QwtPlotCurve *cCos = new QwtPlotCurve(”y = cos(x)”);#if QT_VERSION >= 0×040000cCos->setRenderHint(QwtPlotItem:RenderAntialiased);#endifcCos->setPen(QP

7、en(Qt:blue);/藍(lán)色曲線cCos->attach(this);3、設(shè)置曲線的數(shù)據(jù)內(nèi)容/ Create sin and cos datacSin->setData(FunctionData(:sin);cCos->setData(FunctionData(:cos);4、添加橫縱標(biāo)尺線作為坐標(biāo)的參照/ Insert markers/ a horizontal line at y = 0QwtPlotMarker *mY = new QwtPlotMarker();mY->setLabel(QString:fromLatin1(”y = 0);mY->set

8、LabelAlignment(Qt:AlignRight|Qt:AlignTop);mY->setLineStyle(QwtPlotMarker:HLine);/線的方向mY->setYValue(0.0);/標(biāo)尺線畫(huà)在y0的位置mY->attach(this);/ a vertical line at x = 2 * piQwtPlotMarker *mX = new QwtPlotMarker();mX->setLabel(QString:fromLatin1(”x = 2 pi”);mX->setLabelAlignment(Qt:AlignLeft | Qt:AlignBottom);mX->setLabelOrientation(Qt:Vertical);mX->setLineStyle(QwtPlotMarker:VLine);mX->setLinePen(QPen(Qt:black, 0, Qt:DashDotLine);mX->setXValue(2.0 * M_PI);/該標(biāo)線畫(huà)在x2PI的位置mX->attach(this);同樣的功能如果用Qt來(lái)寫(xiě)的話(huà)需要寫(xiě)大量的繪圖代碼, 比較麻煩, 但使用Qwt的封

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論