QT+VTK显示图片

来源:互联网 发布:my sql count 限制条件 编辑:程序博客网 时间:2024/04/29 12:56

参考教学东灵工作室的教程http://blog.csdn.net/www_doling_net/article/details/8668870

但是遇到了一些问题


1、头文件中的onOpenSlot()编译出错,类似于这样的错误

vtkRendering.lib(vtkOpenGLGlyph3DMapper.obj) : error LNK2019: 无法解析的外部符号 __imp_glCallList,该符号在函数 "public: virtual void __cdecl vtkOpenGLGlyph3DMapper::Render(class vtkRenderer *,class vtkActor *)" (?Render@vtkOpenGLGlyph3DMapper@@UEAAXPEAVvtkRenderer@@PEAVvtkActor@@@Z) 中被引用
1>vtkRendering.lib(vtkOpenGLDisplayListPainter.obj) : error LNK2001: 无法解析的外部符号 __imp_glCallList

发现是因为没有定义onOpenSlot()这个函数,只是在头文件中的类进行了声明,在cpp中定义一个它的空函数编译就可以通过了(当然后面是要定义它的,用来实现功能)


2、m_QVTKWidget报错找不到,是因为要去QT的ui文件中设置,这个名字是QVTKWidge空间的名字,在QTDesigner进行设置(或者找到相应的文件直接更改),若改了之后还会有报错,重启项目再试试就可以了,但要确保修改的是正确的对象。


3、编译通过,但读取图片的时候出错了,报错:vtkTrivialProducer :This data object does not contain the requested extent.

原因是用高版本的vtk(我的是6.1)需要在reader->setinputdata后添加一句reader->update();就可以读取图片了

//用vtkJPEGReader读取JPG图像vtkSmartPointer<vtkJPEGReader> reader = vtkSmartPointer<vtkJPEGReader>::New();reader->SetFileName(fileName_str);reader->Update();//要加update()这个函数,否则会报错!



4、编译通过之后执行时发生内存泄露之类的错误,回跳到mapper之类的语句中,原因我也不知道,可能是版本问题

在头部加入

#define vtkRenderingCore_AUTOINIT 4(vtkInteractionStyle,vtkRenderingFreeType,vtkRenderingFreeTypeOpenGL,vtkRenderingOpenGL)
#define vtkRenderingVolume_AUTOINIT 1(vtkRenderingVolumeOpenGL)

即可


程序截图


0 0
原创粉丝点击