Я новый пользователь в VTK
мне нужно положить renderWindowInteractor
в
QVTKWidget
из QTCreator
, У меня есть это:
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);
Извините за мой английский, я из Колумбии.
QVTKWidget
имеет SetRenderWindow
метод, позволяющий вам установить окно визуализации в движке QVTK. Если вы установили тот же renderWindow для вашего RenderWindowInteractor, он должен работать.
вот пример кода, который я использовал с пользовательским 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();
выяснить, не нужно использовать, виджет bind первым может решить эту проблему, проверенный код может работать.
/////////////////////////////////////////////////////
//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();
*/