使用 vtkOrientationMarkerWidget时,不要使用局部智能指针,这样使用完成之后会自动析构,导致在Qt的窗口中无法显示
解决办法,提前在MainWindows.h 中声明该类型。
vtkSmartPointer<vtkOrientationMarkerWidget> orientationWidget;
然后在 MainWindows.cpp 中使用 vtkSmartPointer<vtkOrientationMarkerWidget>::New()
void MainWindow::initVtk()
{
vtkWidget = new QVTKOpenGLNativeWidget;
vtkWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
// 创建渲染窗口
renWin = vtkSmartPointer<vtkGenericOpenGLRenderWindow>::New();
// 将渲染窗口关联到 QVTKOpenGLNativeWidget
vtkWidget->setRenderWindow(renWin);
// 设置 dockWidget_showModel 的内容部件为 QVTKOpenGLNativeWidget
QWidget *contentWidget = new QWidget;
QVBoxLayout *layout = new QVBoxLayout(contentWidget);
layout->setContentsMargins(0, 0, 0, 0);
layout->addWidget(vtkWidget);
dockWidget_showModel->s