Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在Qt中使用vtk测量三维模型_C++_Qt_Vtk_Qvtkwidget - Fatal编程技术网

C++ 在Qt中使用vtk测量三维模型

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

我试图创建一个类似于本资源的标尺,用于测量vtk本身的模型:

我的目标是尝试在我的Qt应用程序中实现这一点,在QVTKOpenGLWidget中可以测量模型。已使用以下命令初始化渲染窗口:

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应用程序的主窗口中做这一切,所以理论上这应该是可行的,但任何建议都是非常感谢的