问题描述:在之前的电脑上使用的是QVTKWidget进行点云的显示,将代码移植到新的电脑上,在框选点云的时候就出现了背景点云消失的问题,作为一个细节控十分苦恼。
解决办法:翻阅了很多资料发现要根据QT和VTK版本进行甄别,下面引用的博客链接这个感谢博主大大
(1)Qt版本
在Qt5.4以前,在Qt中使用OpenGL一般是使用QGLWidget,相对应的VTK控件只能选择QVTKWidget/QVTKWidget2。
Qt5.4及后面版本中,引入了QOpenGLWidget。对应的VTK控件为QVTKOpenGLWidget/QVTKOpenGLNativeWidget
在VTK8.2之前的版本,一般是使用QVTKOpenGLWidget;
在VTK8.2及之后的版本里,引入了QVTKOpenGLNativeWidget;
检查了我的版本之后,我的QT是5.12.8,VTK是8.2,我应该使用QVTKOpenGLNativeWidget。
查阅VTK官网,发现两者之间的变化主要在于
资料链接
链接: 百度网盘 请输入提取码
提取码: efxr
1.代码方面
首先添加一个头文件
#include <vtkGenericOpenGLRenderWindow.h>
其次
vtkNew<vtkGenericOpenGLRenderWindow> renderWindow;
vtkNew<vtkPolyDataMapper> mapper;
mapper->SetInputConnection(source->GetOutputPort());
还学会了一种新的颜色设置
vtkNew<vtkNamedColors> colors;
renderer->SetBackground(colors->GetColor3d("SteelBlue").GetData());
有很多种颜色
- 基本颜色:红色(Red)、绿色(Green)、蓝色(Blue)、黄色(Yellow)、青色(Cyan)、品红(Magenta)、黑色(Black)、白色(White)等。
- 扩展颜色:橙色(Orange)、紫色(Purple)、棕色(Brown)、灰色(Gray)等。
- 更具体的颜色名称:如“SkyBlue”(天蓝色)、“DarkRed”(深红色)、“LightGreen”(浅绿色)等。
2.QT控件升级
首先找到控件OpenGL Widget
拖拽一个出来,右击控件,选择提升为,填写类名称和头文件(注意要大小写与类名称一致)