C++ 在Qt中使用vtk测量三维模型
我试图创建一个类似于本资源的标尺,用于测量vtk本身的模型: 我的目标是尝试在我的Qt应用程序中实现这一点,在QVTKOpenGLWidget中可以测量模型。已使用以下命令初始化渲染窗口:C++ 在Qt中使用vtk测量三维模型,c++,qt,vtk,qvtkwidget,C++,Qt,Vtk,Qvtkwidget,我试图创建一个类似于本资源的标尺,用于测量vtk本身的模型: 我的目标是尝试在我的Qt应用程序中实现这一点,在QVTKOpenGLWidget中可以测量模型。已使用以下命令初始化渲染窗口: vtkNew<vtkGenericOpenGLRenderWindow> renderWindow; ui->qvtkWidget->SetRenderWindow(renderWindow); vterwindow; ui->qvtkWidget->SetRenderWi
vtkNew<vtkGenericOpenGLRenderWindow> renderWindow;
ui->qvtkWidget->SetRenderWindow(renderWindow);
vterwindow;
ui->qvtkWidget->SetRenderWindow(renderWindow);
其余部分是从上面的资源中复制的,因为我的项目中的所有内容都已设置好,名称如下所示:
vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =
vtkSmartPointer<vtkRenderWindowInteractor>::New();
renderWindowInteractor->SetRenderWindow(renderWindow);
vtkSmartPointer<vtkPointHandleRepresentation3D> handle =
vtkSmartPointer<vtkPointHandleRepresentation3D>::New();
vtkSmartPointer<vtkDistanceRepresentation3D> rep =
vtkSmartPointer<vtkDistanceRepresentation3D>::New();
rep->SetHandleRepresentation(handle);
vtkSmartPointer<vtkDistanceWidget> widget =
vtkSmartPointer<vtkDistanceWidget>::New();
widget->SetInteractor(renderWindowInteractor);
widget->SetRepresentation(rep);
widget->SetWidgetStateToManipulate();
widget->EnabledOn();
widget->ProcessEventsOn();
renderer->ResetCamera();
renderWindow->Render();
renderWindowInteractor->Initialize();
vtksmartpointerRenderwinterActor=
vtkSmartPointer::New();
RenderWindowWinterActor->SetRenderWindow(renderWindow);
VTKSmart指针句柄=
vtkSmartPointer::New();
vtkSmartPointer代表=
vtkSmartPointer::New();
代表->设置手柄代表(手柄);
vtkSmartPointer小部件=
vtkSmartPointer::New();
widget->setinteractior(renderWindowInteractor);
widget->SetRepresentation(rep);
widget->SetWidgetStateToManipulate();
widget->EnabledOn();
widget->ProcessEventsOn();
渲染器->重置摄影机();
renderWindow->Render();
renderWindowInteractor->Initialize();
我面临的问题是,应用程序加载良好,但我无法与应用程序交互,这是有意义的,因为在上面的代码中,我在某种程度上覆盖了交互程序,因此我做了以下更改:
vtkSmartPointer<vtkPointHandleRepresentation3D> handle =
vtkSmartPointer<vtkPointHandleRepresentation3D>::New();
vtkSmartPointer<vtkDistanceRepresentation3D> rep =
vtkSmartPointer<vtkDistanceRepresentation3D>::New();
rep->SetHandleRepresentation(handle);
vtkSmartPointer<vtkDistanceWidget> widget =
vtkSmartPointer<vtkDistanceWidget>::New();
widget->SetInteractor(ui->qvtkWidget->GetInteractor());
widget->SetRepresentation(rep);
widget->SetWidgetStateToManipulate();
widget->EnabledOn();
widget->ProcessEventsOn();
renderer->ResetCamera();
renderWindow->Render();
ui->qvtkWidget->GetInteractor()->Initialize();
vtksmart指针句柄=
vtkSmartPointer::New();
vtkSmartPointer代表=
vtkSmartPointer::New();
代表->设置手柄代表(手柄);
vtkSmartPointer小部件=
vtkSmartPointer::New();
widget->setinteractitor(ui->qvtkWidget->getinteractitor());
widget->SetRepresentation(rep);
widget->SetWidgetStateToManipulate();
widget->EnabledOn();
widget->ProcessEventsOn();
渲染器->重置摄影机();
renderWindow->Render();
ui->qvtkWidget->GetInteractitor()->初始化();
这会让我与模型互动;然而,它没有添加测量功能,但我也得到一个弹出窗口,上面写着如下内容
QVTKInteractor无法控制事件循环
这让我很困惑。我在我的Qt应用程序的主窗口中做这一切,所以理论上这应该是可行的,但任何建议都是非常感谢的