1. 程式人生 > >qt超強繪圖控制元件qwt

qt超強繪圖控制元件qwt

qwt是一個基於LGPL版權協議的開源專案, 可生成各種統計圖。它為具有技術專業背景的程式提供GUI元件和一組實用類,其目標是以基於2D方式的窗體部件來顯示資料, 資料來源以數值,陣列或一組浮點數等方式提供, 輸出方式可以是Curves(曲線),Slider(滾動條),Dials(圓盤),Compasses(儀表盤)等等,目前已經應用到許多工業領域,同時qwt也致力於3d的開發。但許多時候,qwt的安裝配置難到了許多人,我曾經也在這裡原地踏步很久,為了給大家開發方便,把我的安裝經驗分享給大家,避免少走點彎路。

1.前言

qwt有多強大,可以看看官網的截圖:

其功能遠不止展示的這些,還包括移動圖線上的點修改圖線,在畫布上任意作圖,另外,qwt控制元件最大的優點是它的靈活性,但這個靈活性也導致它偶爾會很麻煩

2.下載最新的qwt

windows下程式設計下載zip,ubuntu下載bz2的

還有個pdf說明文件,下不下都無所謂,因為安裝包裡面已經有文件了

下面說說安裝的問題

3.安裝

把下載的檔案解壓縮放到一個固定目錄裡 我在qt安裝目錄下面新建資料夾qtctrl,把所有第三方控制元件都放置在這裡的 解壓完的檔案如下圖所示

下面對它進行編譯

3.1 編譯控制元件

許多人在這裡止步,在網上看到許多複雜的教程,又要寫命令列又要設定啥啥啥的,其實很簡單,直接雙擊qwt.pro這個檔案,用qt Creator開啟(建議用qt Creator開啟)

點編譯(先在debug下和release模式下編譯都一樣),就開始編譯了,你可以去上個廁所,喝杯茶,上上網

編譯完會有個錯誤提示


這個正常,不用理他,只要編譯輸出那裡沒有錯誤提示就行

好了,這就ok了,複雜的編譯過程就是點幾個滑鼠而已

編譯完後會在原來的lib資料夾下生成dll和lib,同時會在目錄外生成qt creator用的外掛dll


我們用到的是qwt.dll,qwt.lib,qwtd.dll,qwtd.lib。前者對應release版本,後者對應debug版本,其他檔案可以刪除

在build-qwt-Desktop_Qt_5_1_1_MSVC201x_32bit-Release目錄下的designer目錄下的plugins目錄下的designer目錄下(@[email protected]

,囧rz)你會發現qwt_designer_plugin.dll和qwt_designer_plugin.lib


這些就是配置qwt的必要檔案

3.2配置qwt

3.2.1 整合進Qt Designer

找到qt安裝目錄
目錄下的tools資料夾是qt creator的安裝位置,裡面就是QtCreator,找到QtCreator\bin\plugins\designer\資料夾下,把編譯好的qwt_designer_plugin.dll放入。開啟qtcreator,就能看的qwt控制元件了。
拖放幾個控制元件試著執行,這時軟體肯定是編譯不過的
由於標頭檔案dllqt creator都沒有找到,所以肯定是編譯不過的,現在又兩種方法

3.2.2 整合Qt Creator

方法1:(建議使用)

需要用到qwt的專案,開啟它的pro檔案 加入如下語句: 其中根據每個人的檔案位置不一樣,只需要改動第一個語句就可以,就是定位到qwt的安裝位置的語句
#qwt設定
QWT_ROOT = d:/Qt/qtctrl/qwt-6.1.0
include( $${QWT_ROOT}/qwtfunctions.pri )
INCLUDEPATH += $${QWT_ROOT}/src
DEPENDPATH  += $${QWT_ROOT}/src
%QWT_CONFIG  += QwtDll %如果需要使用繼承時需要這句 -- 下面依次類推

contains(QWT_CONFIG, QwtFramework) {
    LIBS      += -F$${QWT_ROOT}/lib
}
else {

    LIBS      += -L$${QWT_ROOT}/lib
}
qwtAddLibrary(qwt)
contains(QWT_CONFIG, QwtOpenGL ) {

    QT += opengl
}
else {

    DEFINES += QWT_NO_OPENGL
}
contains(QWT_CONFIG, QwtSvg) {

    QT += svg
}
else {

    DEFINES += QWT_NO_SVG
}
win32 {
    contains(QWT_CONFIG, QwtDll) {
        DEFINES    += QT_DLL QWT_DLL
    }
}
#end qwt set
然後可以成功編譯應用程式了

方法2:(非常不建議)

把lib檔案放置qt sdk的lib資料夾下,dll檔案放置在sdk的bin資料夾下
qt sdk目錄根據版本不同不一樣,我的是vs2012版的,在c:\Qt\Qt5.1.1\5.1.1\msvc2012\目錄下其他的同理,2010的就在Qt\Qt5.1.1\5.1.1\msvc2010\
把qwt.dll和qwtd.dll複製到qt安裝目錄下的bin資料夾中 把qwt.lib和qwtd.lib檔案複製到qt安裝目錄的lib資料夾下

把src資料夾下的標頭檔案複製到qt安裝資料夾下的include資料夾下(新建qwt資料夾) 這樣就可以了,但是還是不能編譯成功,因為需要設定一下pro檔案 在pro檔案下加入如下語句
	
#qwt設定
include(d:/Qt/qwt-6.1.0/qwtfunctions.pri)
DEFINES *= QWT_DLL
CONFIG += qwt
LIBS += -Ld:/Qt/Qt5.0.2/5.0.2/msvc2010/lib-lqwt
INCLUDEPATH += d:/Qt/qwt-6.1.0/src
DEPENDPATH += d:/Qt/qwt-6.1.0/src
qwtAddLibrary(qwt)
#end qwt
至此qwt的安裝配置就完成了。 qwt資料夾下有說明文件和例子,通過他們都能掌握基本的操作,這裡暫不細說了

注:

當你用qt creator編譯發現連接出問題時,你可以試下點“構建”-“清理所以專案”,當這個也沒有反應時,你可以手動把編譯的那個資料夾(預設和專案同級類似於“build-qwt-Desktop_Qt_5_1_1_MSVC201x_32bit-Release”這樣的樣式)全部刪除。之後再編譯,如果還有連線問題就是你程式碼有問題了。

相關推薦

qt超強繪圖控制元件qwt

qwt是一個基於LGPL版權協議的開源專案, 可生成各種統計圖。它為具有技術專業背景的程式提供GUI元件和一組實用類,其目標是以基於2D方式的窗體部件來顯示資料, 資料來源以數值,陣列或一組浮點數等方式提供, 輸出方式可以是Curves(曲線),Slider(滾動條),Di

paper 139:qt超強繪圖控件qwt - 安裝及配置

版本 creat 我們 ubuntu下 設置 1.0 cat 靈活 opengl qwt是一個基於LGPL版權協議的開源項目, 可生成各種統計圖。它為具有技術專業背景的程序提供GUI組件和一組實用類,其目標是以基於2D方式的窗體部件來顯示數據, 數據源以數值,數組或一組浮點

Linux下編譯並使用Qt第三方圖形控制元件qwt(Ubuntu12.04 + Qt4.8.1 + qwt6.1.2)

編譯環境 主機系統: VMWare + Ubuntu 12.04 (32位) 編譯器版本: gcc-4.6.3 Qt版本: Qt-4.8.1 + Qt Creator-2.5.0 qwt版本: qwt-6.1.2 安裝步驟 cd

Qt之在控制元件繪圖

1.總述 Qt的要在當前類對應的視窗上繪圖一般需要重寫paintEvent函式,但是Qt的事件過濾器預設是把父視窗下子控制元件的繪圖事件給過濾了的,因此重寫父視窗的paintEvent函式是無法在子控制元件上進行繪圖的,下面舉一個例子。   1 void MainWindow::m

QT視窗、控制元件級基本繪圖實踐

這學期一共做了四個實驗,第一個實驗為學生成績進行排序,主要是熟悉Qt編寫C++的環境,以及QSort的用法、qDebug過載的方法。這裡不在贅述。 這三篇部落格主要是從整體上講解後三個實驗的整體思路,包括設計目的、程式架構、涉及到的一些Qt功能的關鍵要素。 三個實驗分別為

Qt 之 ActiveX控制元件跑官方例程記錄

目錄(?)[-] 開發環境 基礎知識瞭解 QT的ActiveX控制元件形式 in-process執行的ActiveX server控制元件 獨立執行的ActiveX server控制元件 開發環境 win7 64+QT

【向量圖控制元件更新】向量繪圖控制元件VectorDraw系列產品 v8.8001.0.2 Beta釋出

VectorDraw Developer Framework(VDF)是一個用於應用程式視覺化的圖形引擎庫。有了VDF提供的功能,您可以輕鬆地建立、編輯、管理、輸出、輸入和列印2D和3D圖形檔案。該庫還支援許多向量和柵格輸入和輸出格式,包括本地PDF和SVG匯出。 VectorDraw web libr

快速掌握TeeChart繪圖控制元件攻略(C#)

在自己軟體開發過程中,常會用到繪圖控制元件,鑑於開發週期的限制,為了加快專案的開發效率,常選擇使用TeeChart圖表控制元件,快速將資料繪製成各式的曲線或圖表,直觀、形象地表示出資料傳遞出來的資訊,下面是小編為大家總結的TeeChart繪圖常用操作/屬性。 百度經驗:jingyan.ba

如何設定Qt中的控制元件透明度

引入QGraphicsOpacityEffect類,設定QGraphicsOpacityEffect物件的透明度,然後將此透明度應用到控制元件上。 需要包含的標頭檔案: #include <QGraphicsOpacityEffect> 程式碼: ... m_w

TeeChart替代品,MFC下好用的高速繪圖控制元件-(Hight-Speed Charting)

也許這是vc下最好最方便的繪圖類,它有TeeChart的繪圖和操作風格,不用當心註冊破解的問題,因為它是開源的。不用打包註冊,因為它是封裝成類的,能方便擴充套件繼承。vc6.0到vs2010都能使用,而且非常簡單。 在使用它的時候,展示一下它的效果吧: 如果

WPF 在繪圖控制元件(Shape)中新增文字 [2018.7.15]

原文: WPF 在繪圖控制元件(Shape)中新增文字 [2018.7.15] Q:使用Shape的子類Ellipse畫一個圓,如何在圓中新增文字? A:Shape類中不包含Text屬性。可使用Shape類和TextBlock類組合,放到Grid中來實現。     &n

Qt自定義控制元件以及控制元件的提升

關於 在使用Qt做介面時,通用、常用的控制元件重複設定屬性是件麻煩的事情,比如密碼輸入框,一個密碼輸入框要設定許多屬性,比如密文顯示,長度,只能輸入固定字元型別,禁止複製等等,一個專案裡面有時會用到很多密碼框,每設定一個密碼框就會導致對上面的屬性重複設定,會導

C#開源繪圖控制元件Oxyplot

           var model = new PlotModel { Title = "圖的標題" };            var scatterSeries = new ScatterSeries { MarkerType = MarkerType.Diamond , Title = "散點系列

PaintView 繪圖控制元件解析

  部落格地址:部落格園,版權所有,轉載須聯絡作者。   最近做了個繪圖的控制元件,實現了一些有趣的功能。   先上效果圖:    PaintView畫圖工具: 1.可直接使用設定按鈕來實現已擁有的方法,且拓展性強 2.基礎功能:更換顏色、更換橡皮、以及更換橡皮和筆的粗細、清屏、倒入

Qt Creator 窗體控制元件自適應視窗大小布局

常見的軟體視窗大小改變(最大化、手動改變時)需要視窗的部件能夠自適應佈局,而在Qt的應用程式介面設計中,對於像我一樣的初學者如何實現視窗自適應調整還是要繞點彎路的。網上百度了很多,多數說的很含糊,還有很多是用程式實現的,既然已經有Qt Creator那麼高整合度的工具了,我還是傾向於直接在Qt Crea

Qt自定義控制元件的建立與初步使用(二)之圖片上繪製文字、箭頭、曲線

本文目的:編輯自定義控制元件的介面ui,並在圖片上添文字、箭頭、曲線、開啟、儲存等功能。並說明了如何去使用這個編輯好的ui介面控制元件! 上次簡單的說明了如何去建立Qt自定義控制元件,當時還是對其瞭解不夠深刻,現在看來,QT自定義控制元件就是你事先把介面寫好(一般基於QWi

Qt中窗體控制元件按照比例縮放,自適應視窗大小進行佈局

    最近在做本科畢設,用到了Qt,無奈本人實在是太過於小白了,很多東西都進行了很久的探索,比如今天說到的窗體控制元件佈局...一把辛酸淚     首先就是建立一個GUI檔案,然後進行UI設計,這裡就只需要從左邊進行拖拽,這個很easy啦...     然後對其進行佈局

QT之QML控制元件

QT quick中提供了很多的實用控制元件widget,下面介紹幾種常用的。 這部分介紹基本是參照QtCretator提供的幫助文件,一定要學會使用,不明白的去查詢幫助。 Item 基本上所有的可是控制元件的基類都是Item,上節說過了QML的格式是以pr

Qt動態建立控制元件並實現佈局

最近搞的一些需求有相關的設計,從網上找來一段程式碼,受到一些啟發,記下來備用。 有相關需求的可以參考 直接上程式碼: if(icreateControlNum<=display_num_Line) { rownum=1; display_num_Line=icr

Qt自定義控制元件的建立與初步使用

本篇部落格的目的是簡單介紹:建立一個用QLabel類來顯示圖片的自定義控制元件的編寫。在寫自定義控制元件的過程中遇到了很多的難題,但都慢慢解決了,本人對Qt自定義控制元件的認識還不深刻,做的不對的地方,還請大家指出,我會盡快修改,免得誤導他人! 配置:Qt creator5