成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

利用Qt繪圖實現QWT繪制科學圖表

移動開發
Qwt是一個基于LGPL版權協議的開源項目,其目標是提供一組2D的窗體庫顯示技術領域的數據。該工具基于Qt開發,所以也繼承了Qt的跨平臺特性。

Qwt是一個基于LGPL版權協議的開源項目,其目標是提供一組2D的窗體庫顯示技術領域的數據,數據源以浮點數組或范圍的方式提供,輸出方式可以是Curves(曲線),Slider(滾動條), Dials(圓盤),compasses(儀表盤)等等。該工具庫基于Qt開發,所以也繼承了Qt的跨平臺特性,據原作者文檔所說,該項目在Qt-win/Qt-x11/Qt-embedded(qvfb環境上都測試過, 運行正常。項目的主頁在:http://qwt.sourceforge.net/

在網上搜了一下,發現關于qwt的中文資料實在很少,基本上只有關于編譯和安裝的文章。實際上經過筆者實踐,Qwt的編譯和運行實在乏善可陳,qmake;make就可以搞定,沒什么可memo的東西,所以這篇文章將以掃盲為主,介紹Qwt的feature。

當然按照正常的順序,我們還是從編譯安裝開始。從svn服務器上下載***代碼:svn co https://qwt.svn.sourceforge.net/svnroot/qwt/trunk/qwt

進入qwt目錄, 運行你電腦上qt4對應的qmake, 再運行make編譯。如筆者環境中是

  1. cd qwt  
  2. export PATH=/usr/local/Trolltech/Qt-4.5.1/bin/:$PATH  
  3. qmake  
  4. make 

編譯要花個幾分鐘的時間。 成功后在lib下會生成 libqwt.so*文件, 并且examples也參與編譯, 生成的binary在examples/bin下, 我們可以運行這些例子初步查看qwt的功能。

  1. export LD_LIBRARY_PATH=$PWD/lib  
  2. cd examples/bin  
  3.  ./simple 

simple是qwt自帶的例子中最簡單的一個, 一共只有一百來行的代碼, 實現了數學中的正弦函數(sin())和余弦函數(cos())曲線。如圖:

利用Qt繪圖實現QWT繪制科學圖表

這個例子里用到的核心類有四個(以下內容是筆者的理解, 有可能有不對的地方,請酌情閱讀):

QwtPlot

類似一個2D繪圖的容器, 里面可以放其他的QwtPlotItem派生類對象, 比如本例子中使用的QwtPlotMarker等。(有點類似Qt里的graphicsview的感覺。) 這個類負責控制繪圖數據的產生和傳遞, 并且繪制一個坐標軸。

QwtPlotMarker

標尺類, 用于繪制刻度線。

QwtPlotCurve

曲線類, 用于繪制各種曲線。

QwtSyntheticPointData

比較奇怪,這是個undocumented的類,估計不小心被作者遺漏了,文檔中沒有提供該類的說明,只能從源碼中尋找答案了,這一點很讓人郁悶。通過看code當中的注釋和例子代碼,筆者的理解是該類負責產生數據,它的作用是提供固定數量的浮點數的點,點的數量在構造類時傳入。獲取數據時QwtPlotCurve類會調用該類的y()方法獲取縱坐標。

程序的基本流程是:

1、初始化繪圖容器, 設置坐標軸的參數

  1. // Set axes  
  2. setAxisTitle(xBottom, “x –>”);  
  3. setAxisScale(xBottom, 0.0, 10.0);//橫坐標從0到10, xBottom表示橫坐標的方向從下往上  
  4.  
  5. setAxisTitle(yLeft, “y –>”);  
  6. setAxisScale(yLeft, -1.0, 1.0); //縱坐標-1到1,yLeft表示縱坐標的方向從左到右 

2、添加正弦余弦曲線

  1. // Insert new curves  
  2. QwtPlotCurve *cSin = new QwtPlotCurve(”y = sin(x)”);  
  3. #if QT_VERSION >= 0×040000  
  4. cSin->setRenderHint(QwtPlotItem::RenderAntialiased);  
  5. #endif  
  6. cSin->setPen(QPen(Qt::red));//紅色曲線  
  7. cSin->attach(this);  
  8.  
  9. QwtPlotCurve *cCos = new QwtPlotCurve(”y = cos(x)”);  
  10. #if QT_VERSION >= 0×040000  
  11. cCos->setRenderHint(QwtPlotItem::RenderAntialiased);  
  12. #endif  
  13. cCos->setPen(QPen(Qt::blue));//藍色曲線  
  14. cCos->attach(this); 

#p#

3、設置曲線的數據內容

  1. // Create sin and cos data  
  2. cSin->setData(FunctionData(::sin));  
  3. cCos->setData(FunctionData(::cos)); 

4、添加橫縱標尺線作為坐標的參照

  1. // Insert markers  
  2. // …a horizontal line at y = 0…  
  3. QwtPlotMarker *mY = new QwtPlotMarker();  
  4. mY->setLabel(QString::fromLatin1(”y = 0″));  
  5. mY->setLabelAlignment(Qt::AlignRight|Qt::AlignTop);  
  6. mY->setLineStyle(QwtPlotMarker::HLine);//線的方向  
  7. mY->setYValue(0.0);//標尺線畫在y=0的位置  
  8. mY->attach(this);  
  9.  
  10. // …a vertical line at x = 2 * pi  
  11. QwtPlotMarker *mX = new QwtPlotMarker();  
  12. mX->setLabel(QString::fromLatin1(”x = 2 pi”));  
  13. mX->setLabelAlignment(Qt::AlignLeft | Qt::AlignBottom);  
  14. mX->setLabelOrientation(Qt::Vertical);  
  15. mX->setLineStyle(QwtPlotMarker::VLine);  
  16. mX->setLinePen(QPen(Qt::black, 0, Qt::DashDotLine));  
  17. mX->setXValue(2.0 * M_PI);//該標線畫在x=2PI的位置  
  18. mX->attach(this); 

同樣的功能如果用Qt來寫的話需要寫大量的繪圖代碼, 比較麻煩, 但使用Qwt的封裝庫代碼更OO且更容易理解和維護。 在這個例子中使用Qwt的優勢體現得可能還不太明顯, 相比而言復雜一些的圖表更能體現Qwt的優越性。 再來幾個例子的截圖:

利用Qt繪圖實現QWT繪制科學圖表

Qt繪圖 

Qt繪圖 

利用Qt繪圖實現QWT繪制科學圖表

小結:通過這幾張圖片,可以看出,其實用Qt繪圖還是蠻不錯的。本篇的內容希望對你有幫助哦!

【編輯推薦】

QT 4應用程序解析

淺談Qt做文件瀏覽器

淺談Qt中多線程編程

在Qt中如何寫控制臺程序

諾基亞開發框架Qt的前世今生

基于Qt Web瀏覽器設計與實現

責任編輯:zhaolei 來源: 互聯網
相關推薦

2011-06-20 16:38:33

Qt QWidget Qt4.5

2015-07-22 10:57:36

watchOS圖表自定義

2022-07-15 16:04:22

R 語言

2011-06-13 14:29:40

Qt Designer

2014-04-29 14:27:59

OpenGL ES 2Android繪制紋理

2011-02-25 15:49:09

NecessitasQtAndroid

2019-12-11 10:45:08

Python 開發編程語言

2020-06-28 15:01:18

代碼開發繪圖

2011-08-12 10:46:18

iPhone繪圖繪制QuartZ

2011-08-12 11:01:09

iPhone繪圖QuartZ繪制

2011-08-12 11:08:45

iPhone繪圖QuartZ繪制

2011-06-24 17:38:09

Qt 坐標 事件

2017-06-13 15:37:21

大數據圖表繪制常用軟件

2021-08-30 11:40:06

PythonSeaborn可視化

2009-10-23 16:43:01

VB.NET繪制圖形

2011-06-30 15:09:37

QT 繪制 圖形

2021-05-10 15:14:23

Python棒棒糖圖表

2011-09-16 13:12:54

IOS應用繪圖科學函數計算器

2021-01-06 10:05:09

鴻蒙HarmonyOSCanvas

2020-09-23 16:05:42

Python手繪圖表編程語言
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲一二三区在线观看 | 精品一区在线免费观看 | 国产精品久久久久久久免费大片 | a在线观看免费 | 中国人pornoxxx麻豆 | a在线观看| 国产精品一区二区久久 | 中文字幕日韩欧美一区二区三区 | 亚洲手机在线 | 日韩欧美在线播放 | 黄色一级免费观看 | 狠狠做六月爱婷婷综合aⅴ 国产精品视频网 | 亚洲成人播放器 | 成人国产精品久久久 | 成人在线视频观看 | 成人性视频在线播放 | 一区福利视频 | 亚洲一区二区在线播放 | 黄色在线免费播放 | 女女爱爱视频 | 国产 日韩 欧美 在线 | 国产一区二区三区精品久久久 | 综合精品| 最新中文字幕第一页视频 | 69av在线视频 | 精品国产一级 | 一区二区日本 | 国产亚洲一区二区精品 | 欧美日韩电影一区 | 草久网 | 亚洲视频在线看 | 欧美中文| 日韩欧美高清dvd碟片 | 亚洲一二三区精品 | 两性午夜视频 | 日本特黄a级高清免费大片 特黄色一级毛片 | 欧美综合在线观看 | 成人国产精品久久久 | 欧美日韩一区在线播放 | 成人a网| 精品一区二区三区四区视频 |