VS2017編譯QVTKWidget遇到錯誤

QVTKWidget引發的錯誤

場景:我需要在Qt上顯示點雲,所以配置了VS2017 +Qt+PCL庫,並且下載更新了QVTKWidget。在向界面加入QVTKWidget之前,我的界面運行正常,界面中加入了QVTKWidget之後,編譯+運行出現了各種奇葩錯誤,例如:

在一個空界面中加入QVTKWidget,編譯通過,但是運行時出現“未加載符號文件”的錯誤。在這裏插入圖片描述

在網上找到解決此問題的方式爲:在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已經沒用了,我將其刪除後,子窗口關閉也就沒有出現上述警告。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章