QVTKInteractor cannot control the event loop解决方案

在结合使用Qt和VTK的时候,采用QVTKOpenGLWidget控件作为结合两者的接口,在Qt界面上创建了一个可以显示vtk图形的窗口。
为了使用这个窗口,假定窗口名为openGLWidget,用以下代码获得了窗口内的一个renderer并初始化了窗口。

vtkSmartPointer renderer = vtkSmartPointer::New();
vtkNew window;
ui.openGLWidget->SetRenderWindow(window);
ui.openGLWidget->GetRenderWindow()->AddRenderer(renderer);
ui.openGLWidget->show();
ui.openGLWidget->GetInteractor()->Initialize();
ui.openGLWidget->GetInteractor()->Start();

发现vtk会自动开启一个警告窗口,提示

QVTKInteractor cannot control the event loop

在[vtkusers] Problem with checkerWidget in VTK+QT页面中找到了答案。原来QVTKOpenGLWidget会在创建时完成Interactor创建和开启,保证其对窗口的控制,因此

ui.openGLWidget->GetInteractor()->Initialize();
ui.openGLWidget->GetInteractor()->Start();

这两句话是不必要的。
删除这两句话后,程序不再产生vtk错误窗口。

你可能感兴趣的:(QVTKInteractor cannot control the event loop解决方案)