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 下載地址:https://cmake.org/download/ 下載文件:cmake-3.9.3-win64-x64.msi
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編譯選項