QVTKWidget引发的错误
场景:我需要在Qt上显示点云,所以配置了VS2017 +Qt+PCL库,并且下载更新了QVTKWidget。在向界面加入QVTKWidget之前,我的界面运行正常,界面中加入了QVTKWidget之后,编译+运行出现了各种奇葩错误,例如:
在一个空界面中加入QVTKWidget,编译通过,但是运行时出现“未加载符号文件”的错误。![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/da2511fa4aff77acbd221a430685d67d.png)
在网上找到解决此问题的方式为:在main函数中加入以下代码可以解决这个问题
#include <QMainWindow>
#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkInteractionStyle);
第一个问题解决之后验证了一点:VS+QT+PCL配置的环境是有效可运行的。然后我向代码中添加新的内容,但是出现了超出我可怜的C++认知范围的事情如下:![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/6feb607e07d74d270d03165f94a118be.png)
而导致上述错误发生的那一句居然是一句打印(添加了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已经没用了,我将其删除后,子窗口关闭也就没有出现上述警告。