环境:vtk9.0 QT5.12 PCL 1.12 vs2019 (x64)
这段时间下载了VTK 9.0,并利用vs2019对QVTK进行了编译。
1、只要在编译过程中勾选了QT相关选项,就一定可以生成QVTK相关的头文件和库。
【编译过程网上已经有了很多人发了文件,随便找一篇参考就好。】
2、与之前版本不一样的,QVTK9.0确实没有QT Designer所需要的plug-in文件。也确实不需要这个plug-in文件。【我为这个问题纠结了很久】
只需要在QT的ui界面上拖一个openGL的widget空间就可以,然后将其提升为 QVTKOpenNativeWidget这个类即可。
3、关于widget与viewer连接的代码以及头文件的要求。
除了以下2点外,其余与之前版本连接方法一致。
3.1 头文件
#if QVTKVERSION>8
// #define QVTKWidget QVTKOpenGLNativeWidget
#include "QVTKOpenGLNativeWidget.h"
#include <vtkGenericOpenGLRenderWindow.h>
#else
#include "QVTKWidget.h"
#endif
3.2 连接代码
screen: screen 是ui上你拖进去的那个OpenGL widget 对象
viewer的定义: pcl::visualization::PCLVisualizer::Ptr viewer;
#if VTK_MAJOR_VERSION > 8
auto renderer = vtkSmartPointer<vtkRenderer>::New( );
auto renderWindow = vtkSmartPointer<vtkGenericOpenGLRenderWindow>::New( );
renderWindow->AddRenderer(renderer);
viewer.reset(new pcl::visualization::PCLVisualizer(renderer, renderWindow, "viewer", false));
screen->setRenderWindow(viewer->getRenderWindow( ));
viewer->setupInteractor(screen->interactor( ), screen->renderWindow( ));
#else
viewer.reset(new pcl::visualization::PCLVisualizer("viewer", false));
screen->SetRenderWindow(viewer->getRenderWindow( ));
viewer->setupInteractor(screen->GetInteractor( ), screen->GetRenderWindow( ));
#endif