[vtkusers] Changing interactors at runtime

Leonardo M. Ramé l.rame at griensu.com
Mon Oct 25 15:12:49 EDT 2010


On 2010-10-25 15:47:51 -0300, Leonardo M. Ramé wrote:
> I'm using QVTKWidget containing a vtkImageViewer2 and vtkInteractorStyleImage 
> as default interactor, but I'm adding an option to my app, that let the user 
> select some actors with using the interactor vtkInteractorStyleRubberBand2D. 
> After the user end using the rubber band, the app should switch back to the
> vtkInteractorStyleImage, and I can't get the desired results.
> 
> To create the rubberband interactor I'm using a subclass I copied from
> here: http://www.vtk.org/Wiki/VTK/Examples/Cxx/Interaction/RubberBand2D
> 
> When the user chooses the option "select" this code is executed:
> 
>   m_rubberBand = MyRubberBand::New();
>   this->GetInteractor()->SetInteractorStyle(m_rubberBand);
> 
> After using the rubberband, on the mouseReleaseEvent of QVTKWidget,
> I'm executing this, to go back to vtkInteractorStyleImage:
> 
>   this->GetInteractor()->SetInteractorStyle(vtkInteractorStyleImage::New());
> 
> The vtkInteractorStyleImage style should do window/level when the user
> drags the mouse using the left button, this stops working after changing
> the interactor.
> 
> How shoul I change the interactor at run-time?
> 

I'll answer to myself.

The vtkImageViewer2 has its own interactor, so I can use this:

this->GetInteractor()->SetInteractorStyle(this->m_ImageViewer->GetInteractorStyle())

-- 
Leonardo M. Ramé
http://leonardorame.blogspot.com



More information about the vtkusers mailing list