




已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
精品文档 1欢迎下载 qtqt 和和 vtkvtk 共用共用 作者 我是小李 欢迎交流 来源 博客园 发布时间 2009 02 10 11 00 阅读 908 次 原文链接 收藏 QT 与 VTK 的结合开发 2008 07 16 15 26 最近 由于项目的需要 我打算使用 VTK 来开发程序 VTK 全名是 VisualizationToolKit 它是一套跨平台的 C 库 对 OpenGL 作了较全面的封装 将各 种三维模型的存储 运算 显示 交互等内容全都以类的方式封装起来了 并且提供比 OpenGL 强大得多的功能 可惜 VTK 最大的缺点是 没有免费的教程 它只提供免费的 API 手册 其中只是对各个类的功能罗列而已 而参考书籍则需要花几十美元去购买 所以学 习 VTK 只 能依靠它的大量 Example 了 由于我的项目需要兼故未来跨平台的可能 目前只在 Windows 下 所以必须使用一套跨 平台的开发库 在 VTK Examples GUI 的例子里 Windows 平台下只有 SDK MFC C Builder 这几个例子 另外还有 Motif Python Tcl 选择是不少 但是 Motif 听说编程 比较麻烦 我也从来没有接触过 Tcl 和 Python 作为脚本语言 其性能和安全性则有些令 人担忧 也就是说 这里面没有一个是我能使用的 说起跨平台 由于单位里项目的 关系 我接触得比较 多的就是 QT 了 所以 在未选定 VTK 之前 其实我是打算使用 QT OpenGL 的组合方式来开发这个软件的 其实 如果不考虑跨平台 我还是会选择 QT 因为它的事件处理方式对于用惯 Delphi 的我而言 更为顺手 那么现在使用了 VTK 是否 还能将 VTK 和 QT 组合起来使用呢 作为试验 我仿照 VTK Examples GUI Win32 SampleMFC 制作了以下这个小程序 很顺利 结果证明了我的猜想 QT 和 VTK 是可以很方便的结合起来的 下面就跟我来一步步制作这 个程序吧 1 从 http www vtk org 下 载 VTK 的最新版本 我用的是 4 2 该包中只有程序文件 你还需要自己编译 为此你还需要 CMake 用来生成 VC 的 dsw dsp 文件 然后用 VC 打开 生成的工程文件 并进行编译 最后将编译后生成的目录 VTK bin Debug 加入到 Windows 系统环境的 Path 中 2 下载 QT 我目前使用的是 QT334 打开 VC 的 Tools Options Directories 将 QT 的 bin include lib 路径分别加入其中 3 在 VC 中 建立一个新的 Win32 Console Application 工程 建立一个 main cpp 作为 main 函数的入口 代码如下 include include testwindow h int main int argc char argv QApplication app argc argv TestWindow testwin testwin show app connect 精品文档 2欢迎下载 return app exec 其中的 testwindow h 是程序的主窗口 TestWindow 的头文件 一会将会建立该文件 这段程序所做的是 初始化 QApplication 并将 TestWindow 显示出来 并进入主程序的消 息循环 app exec 下面实现 TestWindow 类 分别建立 testwindow h 和 testwindow cpp testwindow h include class TestWindow public QMainWindow Q OBJECT public TestWindow TestWindow testwindow cpp include testwindow h include moc testwindow h TestWindow TestWindow TestWindow TestWindow 你 是否注意到了 testwindow cpp 中的 include moc testwindow h 一行 这个 moc testwindow h 将会建立 TestWindow 的 RTTI 信息 并且绑定消息等 它并不 需要我们 自己实现 而是由 qt 的一个名为 moc 的程序建立 在 VC 的 FileView 中 右键点击 testwindow h 并选择 Settings 然 后在打开的 Project Settings 对话框中选择 Custom Build 页 在 Commands 中填入 moc i testwindow h o moc testwindow h 意思是调用 moc 程序 根据 testwindow h 的内容 自动生成一个名为 moc testwindow h 的 moc 文件 在 Outputs 中填入 moc testwindow h 精品文档 3欢迎下载 然后 在 Project Settings 中选中 projct 在 Link 页的 Object library modules 中加入 qt mt334 lib 精品文档 4欢迎下载 编译程序 如果顺利 一个简单的 QT 程序就写好了 它会在启动后显示一个空白的窗口 3 加入 VTK 的代码 这些代码都可以参考 Examples GUI Win32 SampleMFC 程序 将 testwindow h 改造成如下 include include vtkRenderer h include vtkWin32OpenGLRenderWindow h include vtkWin32RenderWindowInteractor h class TestWindow public QMainWindow Q OBJECT public TestWindow TestWindow protected virtual void paintEvent QPaintEvent virtual bool winEvent MSG private vtkRenderer Renderer vtkWin32OpenGLRenderWindow RenderWindow vtkWin32RenderWindowInteractor Interactor 精品文档 5欢迎下载 testwindow cpp 改造成如下 include testwindow h include moc testwindow h include vtkActor2D h include vtkTextMapper h include vtkTextProperty h include vtkDataSetReader h include vtkDataSetMapper h include vtkCommand h include vtkCamera h include vtkWin32RenderWindowInteractor h include vtkInteractorStyleTrackballCamera h TestWindow TestWindow this Renderer vtkRenderer New this Renderer SetBackground 0 3 0 5 0 1 this RenderWindow vtkWin32OpenGLRenderWindow New this RenderWindow AddRenderer this Renderer this Interactor vtkWin32RenderWindowInteractor New vtkActor2D actor2d vtkActor2D New vtkTextMapper txt vtkTextMapper New actor2d SetMapper txt txt SetInput Hello World txt GetTextProperty SetFontSize 24 this Renderer AddProp actor2d txt Delete actor2d Delete vtkActor actor vtkActor New vtkDataSetReader reader vtkDataSetReader New reader SetFileName weldedSpheres vtk vtkDataSetMapper mapper vtkDataSetMapper New mapper SetInput reader GetOutput actor SetMapper mapper this Renderer AddProp actor mapper Delete reader Delete actor Delete TestWindow TestWindow if this Interactor 精品文档 6欢迎下载 this Interactor Delete if this Renderer this Renderer SetRenderWindow NULL if this RenderWindow this RenderWindow Delete if this Renderer this Renderer Delete void TestWindow paintEvent QPaintEvent e if this Interactor GetInitialized this RenderWindow SetWindowId this winId this RenderWindow WindowInitialize this Interactor SetRenderWindow this RenderWindow this Interactor Initialize this RenderWindow Render bool TestWindow winEvent MSG msg switch msg message case WM LBUTTONDOWN case WM LBUTTONUP case WM MBUTTONDOWN case WM MBUTTONUP case WM RBUTTONDOWN case WM RBUTTONUP case WM MOUSEMOVE case WM CHAR case WM TIMER if this Interactor GetInitialized vtkHandleMessage2 msg hwnd msg message msg lParam msg wParam this Interactor return false 其中用到了一个模型文件 weldedSpheres vtk 可以在 VTK 中找到 可能你需要修改它的路 径 精品文档 7欢迎下载 然后 再次打开 Proect Settings 对话框 在 C C 页中 选择 Category Preprocessor 在 Additional include directories 中加入 D VTK D VTK Parallel D VTK Hybrid D VTK Patented D VTK Rendering D VTK IO D VTK Imaging D VTK Graphics D VTK Filtering D VTK Common 选择 Link 页 选择 Category Input 在 Object library modules 中加入 vtkRendering lib vtkGraphics lib vtkImaging lib vtkIO lib vtkFiltering lib vtkCommon lib vtkftgl lib glu32 lib opengl32 lib glu32 lib opengl32 lib vtkfreetype lib vtkpng lib vtktiff lib vtkzlib lib vtkjpeg lib vtkexpat lib 在 Addtional library path 中加入 D VTK bin debug 精品文档 8欢迎下载 以上都假设 VTK 安装在 D 盘下 如果你安装在其它目录 请修改以上的路径 好了 重新编译程序 运行 你将看到如下所示的 VTK 界面 精品文档 9欢迎下载 Tuesday October 17th 2006 6 13pm TutorialTutorial forfor usingusing QtQt withwith VTKVTK Hi I am a newbie in VTK and Qt For some time now I have been trying to use VTK with Qt but faced a lot of problems getting started and configuring them In the end it worked thanks to Anja Ende Clinton Stimpson and everyone who helped me get started I am writing down the procedure to get VTK to work with Qt in visual studio 2005 environment Hopefully this document will help other newbies save a lot of time I have tested the following procedure with MS Visual Studio 2005 Professional on Windows XP Pro X64 1 Install and get Qt working as per the instructions here This works fine and you can start using Qt with visual studio for those who just want to use Qt with Visual Studio this is how we do it 2 Install and configure VTK using Cmake with a VTK USE GUISUPPORT option and b VTK USE QVTK option set to ON If Qt is installed after VTK you will need to reconfigure VTK to find Qt 3 Now it s time to test the configuration with a code which uses both Qt and VTK You can try it with the example in VTK source Examples GUI Qt Imageviewer Copy this code only the cxx file to a new directory 4 I use qmake to generate build files The method to build this example using qmake is a open visual studio command prompt go to the directory containing the cxx file and type qmake project this makes a pro file Open this file in an editor and modify it as below Automatically generated by qmake 2 00a Wed Oct 11 17 14 01 2006 TEMPLATE vcapp this was originally app modify it to vcapp TARGET DEPENDPATH INCLUDEPATH here include the path to all the directories containing the 精品文档 10欢迎下载 header files LIBS add this line and include all the libraries Qt and VTK needed for the application Input SOURCES main cxx b Save the pro file and run qmake from the command prompt again This will generate a vcproj file Open this file in visual studio and build it there If you included all the libraries and include paths this should build and run perfectly I used qmake for building because I didn t know how to do it with Cmake But if the experts here can throw light on that it would help many Also if someone knows of any other way probably easier and smarter to use Qt with VTK please add to this document Thanks Ashish Go to the top of the page Quote Skip user information alexiuk Beginner Posts 2 2 Thursday May 10th 2007 6 04pm 精品文档 11欢迎下载 RE RE TutorialTutorial forfor usingusing QtQt withwith VTKVTK Hi Ashish Thanks for posting those details I am trying to follow those instructions and am running into problems building QVTK Error messages follow Did you have any trouble building VTK Thanks Mark 1 Build started Project QVTK Configuration Debug Win32 1 Generating moc vtkEventQtSlotConnect cxx 1 Generating moc QVTKWidget cxx 1 Compiling 1 moc vtkEventQtSlotConnect cxx 1 c1xx fatal error C1083 Cannot open source file moc vtkEventQtSlotConnect cxx No such file or directory 1 moc QVTKWidget cxx 1 c1xx fatal error C1083 Cannot open source file moc QVTKWidget cxx No such file or directory 1 Generating Code 1 Build log was saved at file c VTK vcc build GUISupport Qt QVTK dir Debug BuildLog htm 1 QVTK 2 error s 0 warning s VTK Build summary Build 1 succeeded 3 failed 47 up to date 6 skipped Go to the top of the page Quote Skip user information Ashish Beginner 精品文档 12欢迎下载 Posts 8 3 Thursday May 10th 2007 8 30pm RE RE TutorialTutorial forfor usingusing QtQt withwith VTKVTK Hi Mark I didn t face any problems building QVTK Also I have stopped using qmake and use cmake these days Can you give me more details as to what you have done so far and at what step are you getting the errors Are you able to test run a simple Qt code Thanks Ashish Go to the top of the page Quote Skip user information frenchmikey 精品文档 13欢迎下载 Beginner Posts 1 4 Monday February 16th 2009 8 41am VTKVTK withwith QTcreatorQTcreator Hi Ashish I installed VTK and successfully built all the examples specially the GUI Qt everything is working fine when compiled with CMAKE now l try to compile the same examples with Qtcreator and his qmake funtion doesn t work I updated my pro with the includepath and library but doesn t work do you have a simple pro so l can check if l don t miss anything also l m using mingwin thanks Michael my pro CONFIG DEBUG TEMPLATE app TARGET VTK test DEPENDPATH INCLUDEPATH C VTK bin C VTK include vtk 5 2 精品文档 14欢迎下载 LIBS Input SOURCES main cxx Compile messages Starting C Qt QtCreator mingw bin mingw32 make exe debug w mingw32 make Entering directory C Documents and Settings Michael Desktop Project Qt creator vtk C Qt QtCreator mingw bin mingw32 make f Makefile Debug mingw32 make 1 Entering directory C Documents and Settings Michael Desktop Project Qt creator vtk g c g frtti fexceptions mthreads Wall DUNICODE DQT LARGEFILE SUPPORT DQT DLL DQT GUI LIB DQT CORE LIB DQT THREAD SUPPORT DQT NEEDS QMAIN I c Qt QtCreator qt include QtCore I c Qt QtCreator qt include QtCore I c Qt QtCreator qt include QtGui I c Qt QtCreator qt include QtGui I c Qt QtCreator qt include I c VTK bin I c VTK include vtk 5 2 I c Qt QtCreator qt include ActiveQt I debug I I c Qt QtCreator qt mkspecs win32 g o debug main o main cxx mingw32 make 1 Leaving directory C Documents and Settings Michael Desktop Project Qt creator vtk mingw32 make Leaving directory C Documents and Settings Michael Desktop Project Qt creator vtk This application has requested the Runtime to terminate it in an unusual way Please contact the application s support team for more information mingw32 make 1 debug main o Error 3 mingw32 make debug Error 2 Exited with code 2 Error while building project vtk When executing build step Make Go to the top of the page Quote Skip user information xzh biti 精品文档 15欢迎下载 Beginner Posts 1 5 Wednesday March 11th 2009 1 46am hellohello everyone everyone hello everyone i am a foreigner and i am poor in English so forgive me my English So i want to ask Michael have your solved your problem with qtcreator to compile VTK if you have could you tell me how to write pro and do you have some vtk electrical books In my country so few information about vtk and please send me some of them thank you very much And my email is xzh biti Go to the top of the page Quote Skip user information justadreamer Beginner 精品文档 16欢迎下载 Posts 2 6 Friday April 24th 2009 10 13pm QtCreatorQtCreator QTQT VTKVTK inin LinuxLinux Hi just wanted to share my experience on a jump start with using Qt VTK As I don t have experience with using Qt I decided to go the easiest possible way downloaded Qt4 and the QtCreator The steps I took next 1 Built Qt4 from source and installed it 2 Added usr local Trolltech to my PATH environment variable 3 Downloaded the source for VTK 5 4 4 Launched ccmake in the root of the source tree 5 Switched ON VTK USE GUISUPPORT VTK USE QVTK 6 Pressed c to configure in ccmake and specified the version of Qt 4 0 7 After configuring in ccmake launched cmake and then make and make install 8 The needed QVTKWidget h will be in the usr bin local include vtk 5 4 9 Now we launch QtCreator and create the simple application 10 In the mainwindow h I add these headers SourceSource codecode 1 2 3 include include include And these members 精品文档 17欢迎下载 SourceSource codecode 1 2 QVTKWidget vtkWidget vtkRenderer ren 11 In the mainwindow cpp I added this code in the constructor SourceSource codecode 1 2 3 4 5 6 7 8 9 10 MainWindow MainWindow QWidget parent QMainWindow parent ui new Ui MainWindowClass ui setupUi this vtkWidget new QVTKWidget this QFlag 0 ui verticalLayout addWidget vtkWidget ui verticalLayout update ren vtkRenderer New vtkWidget GetRenderWindow AddRenderer ren ren SetBackground 1 0 0 0 ren Render And destructor SourceSource codecode 1 2 3 4 MainWindow MainWindow ren Delete delete vtkWidget delete ui As you see above I have added a verticalLayout to my form it has some more controls and the widget I am adding goes to the bottom 12 In the pro file I added these SourceSource codecode 1 2 3 LIBS L usr local lib vtk 5 4 lvtkCommon lvtksys lQVTK lvtkQtChart lvtkViews lvtkWidgets lvtkInfovis lvtkRendering lvtkGraphics lvtkImaging lvtkIO lvtkFiltering lvtklibxml2 lvtkDICOMParser lvtkpng lvtkpng lvtktiff lvtkzlib lvtkjpeg 精品文档 18欢迎下载 lvtkalglib lvtkexpat lvtkverdict lvtkmetaio lvtkNetCDF lvtksqlite lvtkexoIIc lvtkftgl lvtkfreetype lvtkHybrid INCLUDEPATH usr local include vtk 5 4 13 In the Project Build settings Build environment I added a variable LD LIBRARY PATH usr local lib vtk 5 4 so that when you launch the application the dynamic link
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 兴化市基本知识培训课件
- 2025年食品助剂项目申请报告
- 2025年特种纤维布项目申请报告模板
- 2025年医用绷带项目立项申请报告
- 光电仪器操作培训课件
- 座谈会发言稿格式刷怎么
- 二零二五版文化节临时促销员劳动协议
- 陕西怡康医药招聘笔试真题2024
- 二零二五版北京市交通运输行业劳动合同法实施标准
- 二零二五年布艺产品销售展厅装修工程承包协议
- 班级管理教育调查报告(3篇模板)
- (2024)辅警考试公安基础知识考试试题库及答案
- 2024年度医疗器械监督管理条例培训课件
- 外研版八年级下册英语知识点、语法总结
- GB/T 18910.4-2024液晶显示器件第4部分:液晶显示模块和屏基本额定值和特性
- 一规程四细则培训课件2024
- 意大利米兰整骨技术的案例分享-之评估篇
- 煤矿岗位标准化作业流程
- 部编小学语文6年级上册第8单元作业设计5
- 新人教版六年级上册数学教材解读
- 注塑机定期保养记录表2016
评论
0/150
提交评论