我是VTK的新用户,我需要在QTCreator的QVTKWidget中放一个renderWindowInteractor。我有这个:
vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
vtkSmartPointer<vtkRenderWindow> renderWindow =
vtkSmartPointer<vtkRenderWindow>::New();
renderWindow->AddRenderer(renderer);
vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =
vtkSmartPointer<vtkRenderWindowInteractor>::New();
renderWindowInteractor->SetRenderWindow(renderWindow);
renderer->AddActor(actor);
renderWindow->Render();
renderWindowInteractor->Initialize();但是我怎么才能把RenderWindowInteractor放在QVTKWidget里呢?我试过了,但不起作用。
this->qvtkWidget->GetRenderWindow()->AddRenderer(renderer);对不起,我的英语,我来自哥伦比亚。
发布于 2014-08-15 11:02:26
QVTKWidget有一个SetRenderWindow方法,允许你在QVTK引擎中设置你的渲染窗口。如果您为您的RenderWindowInteractor设置了相同的renderWindow,它应该可以工作。
以下是我在自定义InteractionStyle中使用的代码示例
QVTKWidget *engine = new QVTKWidget ();
// Setup window
vtkSmartPointer<vtkRenderWindow> renderWindow =
vtkSmartPointer<vtkRenderWindow>::New();
// Setup renderer
vtkSmartPointer<vtkRenderer> renderer =
vtkSmartPointer<vtkRenderer>::New();
renderWindow->AddRenderer(renderer);
engine->SetRenderWindow(renderWindow); // make the link between VTK and QT
// create stuff for user interaction
vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =
vtkSmartPointer<vtkRenderWindowInteractor>::New();
/*
vtkSmartPointer<vtkUserInteractionStyle> inter = vtkUserInteractionStyle::New ();
inter->SetDefaultRenderer(renderer);
renderWindowInteractor->SetInteractorStyle( inter );
*/
// make the link between the renderwindow and the interactor
renderWindowInteractor->SetRenderWindow ( renderWindow );
engine->show();
renderWindow->Render ();
renderWindowInteractor->Initialize();发布于 2018-09-13 22:37:00
找出不需要使用的,绑定widget可以先解决这个问题,代码测试它可以工作。
/////////////////////////////////////////////////////
//CODE author:Bing_Lee 2018-9-13
/////////////////////////////////////////////////////
vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New();
renderWindow->AddRenderer(renderer);
vtkSmartPointer<QVTKWidget> widget = vtkSmartPointer<QVTKWidget>::NEW();
widget->SetRenderWindow(renderWindow);
/*//comment
vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor = vtkSmartPointer<vtkRenderWindowInteractor>::New();
renderWindowInteractor->SetRenderWindow(renderWindow);
*/
renderer->AddActor(actor);
/*//comment
renderWindow->Render();
renderWindowInteractor->Initialize();
*/https://stackoverflow.com/questions/25318210
复制相似问题