如何将QVTKWidget嵌入到QT窗体,实现点云的显示?

1.直接通过QT中QtDisigner创建窗体,然后把QVTKWidget控件放进去,这个比较直观,且易操作。但是你先要把QVTKWidgetPlugin.dll和QVTKWidgetPlugin.lib放到QTDesigner目录下。

2.纯代码创建。

这个相对来说可能复杂些,但是,后续的操作可能会灵活些(不like QTDesigner的盆友可以用这个)。

//main.cpp

#include

#include

int main (int argc, char * argv[])

{

  QApplication mainapp(argcargv);

  MainWindow mainwindow;

  mainwindow.show();

  return mainapp.exec();

}

//mainwindow.h

#ifndef MAINWINDOW_H

#define MAINWINDOW_H

 

#include

#if QT_VERSION >= 0x050000

  #include

#else

  #include

#endif

 

#include

 

class QVTKWidget;

 

class MainWindow : public QMainWindow

 public:

  explicit MainWindow (QWidget* parent = 0);

 

 private:

//创建对象

  QVTKWidget* qvtkWidget;

  boost::shared_ptr viewer; 

};

 

#endif // MAINWINDOW_H

 

//mainwindow.cpp

#include "mainwindow.h"

#include "QVTKWidget.h"

#include "vtkRenderWindow.h"

 

MainWindow::MainWindow( QWidget * parent) : QMainWindow( parent )

{

  setWindowTitle( tr("PointCloud"));

//为创建的对象开辟空间

  qvtkWidget = new QVTKWidget(this);

  viewer.reset (new pcl::visualization::PCLVisualizer ("viewer", false));

//这两句代码很重要,至于为何重要,我不是很看的懂,可以一块沟通,

  qvtkWidget->SetRenderWindow (viewer->getRenderWindow ());

  viewer->setupInteractor (qvtkWidget->GetInteractor (), qvtkWidget->GetRenderWindow ());

  setCentralWidget( qvtkWidget );

  qvtkWidget->update ();

}

温馨提示:必要的头文件一定添加的。

#include

#include "QVTKWidget.h"

#include "vtkRenderWindow.h"

最开始时,由于没有包含vtkRenderWindow.h头文件,导致出现奇怪的数据。 

点云显示结果为

如何将QVTKWidget嵌入到QT窗体,实现点云的显示?_第1张图片 

qq:2132591244,一起沟通,一起学习,一起加油。

 

你可能感兴趣的:(QT,C++,QVTKWidget)