renderWindowInteractor в QVTKWidget

Я новый пользователь в 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);

Извините за мой английский, я из Колумбии.

0

Решение

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();
0

Другие решения

выяснить, не нужно использовать, виджет 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();
*/
0

По вопросам рекламы [email protected]