如何解决在 Qt 中使用 vtk 测量 3D 模型
我正在尝试创建某种标尺,如本资源中所示,用于测量 vtk 本身的模型:https://www.weiy.city/2019/08/vtk-measurement-widgets/
我的目标是尝试在我的 Qt 应用程序中实现它,其中模型可以在 QVTKOpenGLWidget 中进行测量。渲染窗口使用以下方法初始化:
vtkNew<vtkGenericOpenGLRenderWindow> renderWindow;
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();
我面临的问题是应用程序加载良好,但我无法与应用程序交互,这是有道理的,因为在上面的代码段中,我有点覆盖了交互器,因此我进行了以下更改:
> 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();
这将让我与模型进行交互;但是,它没有添加测量功能,但我也收到了一个弹出窗口,内容如下。
QVTKInteractor 无法控制事件循环
这让我很困惑。我在我的 Qt 应用程序的 MainWindow 中执行所有这些操作,因此理论上应该可行,但我们不胜感激任何建议。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。