本文档为使用VS+QT+VTK搭建C++开发环境的示例。准备软件:
(1) VS2010(qt4.8.0只能使用VS2010)
(2) QT4.8;
(3) VTK6.1;
(4) QT插件(qt-vs-addin-1.1.0-opensource.exe)(VS使用qt所必需的的插件)。
1. 软件安装
1.1 VS2010的安装较简单,省略。
1.2 QT4.8或者其他版本的安装也很简单,省略。作者的qt可以直接解压存放在一个目录下就可以使用了,不需要安装。
1.3 VTK6.1需要使用cmake编译工具进行编译,比较复杂,可以直接使用我编译好的库。
1.4 QT插件也是直接安装即可。安装完成后需要重启VS。
(需要qt64位库和vtk编译好的库的,可以发邮件到[email protected])
2. 创建工程
2.1 设置qt安装路径
安装完qt插件后,在最上方的主菜单栏会出现一个“Qt”的菜单,点击该菜单下的“Qt Options”(如图1),弹出窗口如图2所示。
图1
图2
点击图2中的Add,弹出如图3所示的窗口。输入qt版本名字,可以随意取名,比如qt4.8_x64。然后选择qt安装目录,如图4所示。注意这个目录需要选到lib和bin文件夹的上一层目录。
图 3
图 4
2.2 创建qt工程
点击“文件”—“新建”—“项目”,如图5所示。
图 5
选择“Qt4 Projects”—“Qt Application”,输入工程名称(如QTProject)和工程存放位置(如D:\Projects\Qt\),如图6所示。点击“确定”,出现如图7所示的界面。
图 6
图7
直接点击“Finish”,完成工程创建。
2.3 分析qt工程和运行qt工程
工程创建成功后,切换到“解决方案资源管理器”(可以在视图菜单中找到),如图8所示。
图8
Form Files文件夹下面的qtproject1.ui是qt的界面文件,专门用来生成qt的界面。qtproject1.h和qtproject1.cpp是该界面文件对应的.h和.cpp文件。Resource Files下面的其他project1.qrc文件为qt的资源管理文件,可以导入一些图片文件。main.cpp是该工程的主文件,工程会从这个文件中的main函数开始启动。
将编译方式改为Release,平台设置为x64,如图9所示。
图9
右键点击该工程,选择“Qt Project Settings”,如图10所示。然后选择Version为qt4.8_x64。
图10
最后,直接CTRL+F5,运行,出现如图11所示界面,说明工程运行成功。
图11
2.4 在qt工程中使用VTK库
vtk和qt一样,是一个c++的库,在vs中使用vtk时,只需要包含其头文件和lib库即可。
右键单击工程,点击“属性”—“配置属性”—“C/C++”—“常规”—“附加包含目录”—“编辑”,弹出图12所示界面。增加VTK的include目录。我计算机上vtk目录是:D:\Projects\CTSegmentation-VS2013-SIMP\projects\External\vtk\include。
图12
点击“链接器”—“常规”—“附加库目录”—“编辑”,增加vtk的lib目录,如图13所示。增加vtk库目录,我计算机上的vtk目录是:
D:\Projects\CTSegmentation-VS2013-SIMP\projects\External\vtk\lib\x64\Release
图13
点击“输入”—“附加依赖库”---“编辑”,然后增加如下vtk库文件:
vtkalglib-6.1.lib
vtkChartsCore-6.1.lib
vtkCommonColor-6.1.lib
vtkCommonComputationalGeometry-6.1.lib
vtkCommonCore-6.1.lib
vtkCommonDataModel-6.1.lib
vtkCommonExecutionModel-6.1.lib
vtkCommonMath-6.1.lib
vtkCommonMisc-6.1.lib
vtkCommonSystem-6.1.lib
vtkCommonTransforms-6.1.lib
vtkDICOMParser-6.1.lib
vtkDomainsChemistry-6.1.lib
vtkexoIIc-6.1.lib
vtkexpat-6.1.lib
vtkFiltersAMR-6.1.lib
vtkFiltersCore-6.1.lib
vtkFiltersExtraction-6.1.lib
vtkFiltersFlowPaths-6.1.lib
vtkFiltersGeneral-6.1.lib
vtkFiltersGeneric-6.1.lib
vtkFiltersGeometry-6.1.lib
vtkFiltersHybrid-6.1.lib
vtkFiltersHyperTree-6.1.lib
vtkFiltersImaging-6.1.lib
vtkFiltersModeling-6.1.lib
vtkFiltersParallel-6.1.lib
vtkFiltersParallelImaging-6.1.lib
vtkFiltersProgrammable-6.1.lib
vtkFiltersSelection-6.1.lib
vtkFiltersSMP-6.1.lib
vtkFiltersSources-6.1.lib
vtkFiltersStatistics-6.1.lib
vtkFiltersTexture-6.1.lib
vtkFiltersVerdict-6.1.lib
vtkfreetype-6.1.lib
vtkftgl-6.1.lib
vtkGeovisCore-6.1.lib
vtkgl2ps-6.1.lib
vtkhdf5-6.1.lib
vtkhdf5_hl-6.1.lib
vtkImagingColor-6.1.lib
vtkImagingCore-6.1.lib
vtkImagingFourier-6.1.lib
vtkImagingGeneral-6.1.lib
vtkImagingHybrid-6.1.lib
vtkImagingMath-6.1.lib
vtkImagingMorphological-6.1.lib
vtkImagingSources-6.1.lib
vtkImagingStatistics-6.1.lib
vtkImagingStencil-6.1.lib
vtkInfovisCore-6.1.lib
vtkInfovisLayout-6.1.lib
vtkInteractionImage-6.1.lib
vtkInteractionStyle-6.1.lib
vtkInteractionWidgets-6.1.lib
vtkIOAMR-6.1.lib
vtkIOCore-6.1.lib
vtkIOEnSight-6.1.lib
vtkIOExodus-6.1.lib
vtkIOExport-6.1.lib
vtkIOGeometry-6.1.lib
vtkIOImage-6.1.lib
vtkIOImport-6.1.lib
vtkIOInfovis-6.1.lib
vtkIOLegacy-6.1.lib
vtkIOLSDyna-6.1.lib
vtkIOMINC-6.1.lib
vtkIOMovie-6.1.lib
vtkIONetCDF-6.1.lib
vtkIOParallel-6.1.lib
vtkIOPLY-6.1.lib
vtkIOSQL-6.1.lib
vtkIOVideo-6.1.lib
vtkIOXML-6.1.lib
vtkIOXMLParser-6.1.lib
vtkjpeg-6.1.lib
vtkjsoncpp-6.1.lib
vtklibxml2-6.1.lib
vtkmetaio-6.1.lib
vtkNetCDF-6.1.lib
vtkNetCDF_cxx-6.1.lib
vtkoggtheora-6.1.lib
vtkpng-6.1.lib
vtkproj4-6.1.lib
vtkRenderingAnnotation-6.1.lib
vtkRenderingContext2D-6.1.lib
vtkRenderingCore-6.1.lib
vtkRenderingFreeType-6.1.lib
vtkRenderingFreeTypeOpenGL-6.1.lib
vtkRenderingGL2PS-6.1.lib
vtkRenderingImage-6.1.lib
vtkRenderingLabel-6.1.lib
vtkRenderingLIC-6.1.lib
vtkRenderingLOD-6.1.lib
vtkRenderingOpenGL-6.1.lib
vtkRenderingQt-6.1.lib
vtkRenderingVolume-6.1.lib
vtkRenderingVolumeAMR-6.1.lib
vtkRenderingVolumeOpenGL-6.1.lib
vtksqlite-6.1.lib
vtksys-6.1.lib
vtktiff-6.1.lib
vtkverdict-6.1.lib
vtkViewsContext2D-6.1.lib
vtkViewsCore-6.1.lib
vtkViewsGeovis-6.1.lib
vtkViewsInfovis-6.1.lib
vtkViewsQt-6.1.lib
vtkzlib-6.1.lib
vtkGUISupportMFC-6.1.lib
vtkGUISupportQt-6.1.lib
vtkGUISupportQtOpenGL-6.1.lib
如图14所示:
修改qtproject.h和qtproject.cpp文件,如下:
图15
图16
右键点击工程,点击“属性”—“配置属性”—“调试”---“环境”,修改其值为:
PATH=$(QTDIR)\bin;D:\Projects\CTSegmentation-VS2013-SIMP\projects\External\vtk\bin\x64\Release;%3b$(PATH)
需要根据vtk的存放目录进行修改。
运行工程,导入stl数据,显示效果为图17:
图17