VS2017编译QVTKWidget遇到错误

QVTKWidget引发的错误

场景:我需要在Qt上显示点云,所以配置了VS2017 +Qt+PCL库,并且下载更新了QVTKWidget。在向界面加入QVTKWidget之前,我的界面运行正常,界面中加入了QVTKWidget之后,编译+运行出现了各种奇葩错误,例如:

在一个空界面中加入QVTKWidget,编译通过,但是运行时出现“未加载符号文件”的错误。VS2017编译QVTKWidget遇到错误_第1张图片

在网上找到解决此问题的方式为:在main函数中加入以下代码可以解决这个问题

#include <QMainWindow>
#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkInteractionStyle);

第一个问题解决之后验证了一点:VS+QT+PCL配置的环境是有效可运行的。然后我向代码中添加新的内容,但是出现了超出我可怜的C++认知范围的事情如下:在这里插入图片描述

而导致上述错误发生的那一句居然是一句打印(添加了using namespace std):在这里插入图片描述
把endl 去掉就完事儿了在cout和endl之前都加上std::也可以
我一直以为是环境没有配置好,哎,QT工程里还是乖乖使用qDebug()吧。

在初始化QVTKWidget控件时出现模板类强制转换错误

因为我的头文件没写全,对QVTKWidget的操作需要的头文件没有加全,导致我编译的时候出现模板类强制转换的错误。新手粗心实在是不应该,头文件请看清楚了,再进行后面的调试。要使用QVTKWidget在Qt界面显示点云的话,在UI的头文件中加入以下代码(这里和我遇到的第一个问题应该是重叠的,粗心,实在是粗心啊~)

#ifndef PCLVISUALIZER_H
#define PCLVISUALIZER_H

#include <vtkAutoInit.h> 
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkInteractionStyle);

#include <QtWidgets/QMainWindow>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/visualization/pcl_visualizer.h>

在一个Qdialog中添加QVTKwidget,关闭Qdialog的时候出现句柄错误,但是程序没有终止

错误输出如下:
ERROR: In C:\Users\T_byte\Desktop\vtk-v8.0.0\Rendering\OpenGL2\vtkWin32OpenGLRenderWindow.cxx, line 227
vtkWin32OpenGLRenderWindow (00000255576E9E00): wglMakeCurrent failed in MakeCurrent(), error: 句柄无效。

遇到这个问题的场景为:主窗口中含有一个QVTKwidget,弹出的子窗口中也含有一个QVTKwidget,这样弹出的QVTKwidget在关闭的时候就会输出上述警告。
我在网上看到好像是不支持两个QVTKwidget具体查看这个谈论。由于我的主窗口中那个QVTKwidget已经没用了,我将其删除后,子窗口关闭也就没有出现上述警告。

你可能感兴趣的:(Qt,3D)