Qt呼叫VTK的詳細教程
Qt呼叫VTK的詳細教程(PCL1.8.1 && VTK8.0)
1.VTK庫在三維視覺化顯示方面(醫學影象、地質、氣象等領域)具有廣泛的應用,呼叫該庫的傳統方式是通過VS,結合Cmake檔案進行編譯。
2.Qt在介面設計、編譯方面具有良好的優勢,如果能使用Qt進行VTK庫的呼叫,這既利於發揮VTK的優勢進行演算法的研究,又利於發揮Qt的優勢進行工程的進展。
3.然而,目前這方面的參考教程較少或不詳細(之所以這樣說是因為 目前網上的教程都是在VS中通過安裝外掛 qt-vs-addin 來實現Qt與VTK的結合的,這樣就失去了Qt Creator的優勢,因為筆者使用過網上這種方法,發現在VS下程式設計很不舒服),在使用Qt進行呼叫過程中會出現未知錯誤。因此,本文親自編譯VTK庫並使用Qt進行呼叫,一方面對自己以前的研究進行總結,另一方面給大家一些參考,避免花費大量時間。
4.本文在win10 64位系統下進行vtk的編譯和測試,已經安裝好Visual Studio 2013 編譯器,主要介紹兩大部分:在windows環境下編譯VTK庫、Qt呼叫VTK詳細步驟。(教程會編譯的VTK庫和測試程式碼進行分享,如有需要可上網下載或直接與我聯絡,詳情見本文第五部分)
一、準備工作
本文需要的軟體和庫如下:
1.Qt下載地址:http://download.qt.io/archive/qt/5.5/5.5.1/ 下載檔案: qt-opensource-windows-x86-msvc2013_64-5.5.1.exe
2.cmake 下載地址:
3.vtk 下載地址:https://www.vtk.org/download/ 下載檔案:VTK-7.1.1.zip
二、編譯VTK(支援Qt)
對於Qt的安裝這裡不詳細說明,建議安裝過程庫檔案全選,這樣安裝目錄就會包含Qt原始碼,方便後續與VTK結合。
Cmake的安裝按照預設即可。
對於VTK的編譯部分,由於篇幅問題,請參考筆者另一篇部落格,win10環境下VTK7.1的編譯和Qt呼叫VTK的詳細教程二(VS2013編譯支援Qt的VTK庫)
三、配置環境變數
完成編譯後,在C:\Program Files目錄下會生成一個VTK資料夾,新增系統環境變數: C:\Program Files\VTK\bin
在VTK目錄下,建立一個文字檔案libsname.txt,裡面寫入 DIR D:\lib\lib /B >libsname.txt,該檔案就會寫下lib目錄下的所有檔名稱,如下所示,共計115個lib檔案。
vtkalglib-7.1.lib
vtkChartsCore-7.1.lib
vtkCommonColor-7.1.lib
vtkCommonComputationalGeometry-7.1.lib
vtkCommonCore-7.1.lib
.......
四、測試
開啟Qt Creator,新建一個專案,依次選擇 “檔案(F)”,“Application”,“Qt Widgets Application”,"Choose",專案命名為:testQtVTK7,如圖1所示。
圖1 新建專案選項
新建的專案中,在testQtVTK7.pro中新增引用VTK環境的配置,如圖2,紅色方框部分是專案呼叫VTK所需要的環境(實際就是前文libsname.txt檔案中所有的lib名稱,本文第五部分分享的下載專案裡面會有完整的配置):
圖2 testQtVTK7.pro檔案配置
經過上述步驟就可以在testQtVTK7專案中引用VTK庫並進行開發了。
在專案中新建一個類TestVTK,並在該類中新增一個test()方法,該方法實現測試vtk。
然後在主方法中呼叫test()方法,並進行編譯執行(release版本),會出現錯誤,提示Error: no override found for 'vtkPolyDataMapper'。需要在主方法前新增如下程式碼(圖3紅色方框部分):
圖3 main新增程式碼
然後在編譯執行,就會執行如下介面,實現Qt成功呼叫VTK庫,恭喜一切搞定。
圖4 Qt呼叫vtk測試
五、關於本文庫和程式碼的說明
對於想要親自動手實踐的開發者可以參考上述第一、二、三、四步,然而對於沒有經驗的開發者,在編譯過程中可能會出現許多錯誤,會浪費大量的精力和時間,讓人很有挫敗感。
為了能儘快地投入到開發中,使用Qt快速呼叫VTK,本文將上述編譯好的VTK庫和testQtVTK7測試專案程式碼進行分享,請按照下述說明進行快速配置,就可以直接使用了。前提是請確保自己的系統是Windows 64系統,VS為2013版本,Qt為 qt-opensource-windows-x86-msvc2013_64-5.5.1。因為本文生成的VTK是64位Relese版本,使用vs2013編譯的,不滿足黃色部分條件可能會出現錯誤,無法呼叫,即使滿足作業系統、VS版本,使用不同的Qt版本也有可能出錯。(猜測是VTK與Qt版本不相容,畢竟這兩者更新的都挺頻繁,是否適用還看運氣和緣分)
為方便讀者獲取最新程式碼,本文將專案公佈在Github上,讀者可自行下載,網址為: https://github.com/tianhu9102/testQtVTK7
或者可以在百度雲盤上下載,如下圖5所示,連結:http://pan.baidu.com/s/1kVKJEnH 密碼:m85v
圖5 VTK庫與測試程式碼分享頁面
下載完畢後,請將VTK.rar解壓到如下目錄(圖6),並配置環境變數: C:\Program Files\VTK\bin
圖6 VTK解壓目錄
使用Qt Creator開啟測試專案,在選項中取消Debug選項(圖7,本文編譯的vtk為release版本,如選擇debug將會出錯),點選Configure Project,最終就會成功執行專案。
圖7 Qt編譯選項
分類: VTK開發