[vtkusers] How to delete an interactorstyle in runtime?

sercani sercanimailgroups at gmail.com
Fri Mar 5 09:53:56 EST 2010


Hi David;
This is the declaration of cis:
/CustomInteractorStyle *cis=CustomInteractorStyle::New();/

and this is the definiton of CustomInteractorStyle class:
/
class CustomInteractorStyle : public QObject, public vtkInteractorStyleImage
{
};/
  this class contains virtual mouse functions of vtkInteractorStyleImage 
and handles these events according to my software's tools...When another 
tool selected, it'is own custom style is set to interactor's style and 
handles events too...When i set the interactor style in runtime like this:

/vtkImageViewer2 viewer;
viewer->GetRenderWindow()->GetInteractor()->SetInteractorStyle(cis);/
  it throws an
"/Unhandled exception at 0x60772abb (vtkRendering.dll) in VTKTry.exe: 
0xC0000005: Access violation reading location 0x00000050.
The program '[2568] VTKTry.exe: Native' has exited with code -1073741819 
(0xc0000005)/."

If i don't set the interactor's interactorstyle,but set the 
interactorstyle's interactor like this:
/cis->SetInteractor(viewer->GetRenderWindow()->GetInteractor());/  
QVTKWidget and my vtkImageViewer2 handles the mousewheel event 
seperately and this cause wrong behaviour in my program...
  I am setting the viewer's and QVTKWidget's interactor like this:
/
     vtkImageViewer2 viewer=vtkImageViewer2::New();
     qvtk->SetRenderWindow(viewer->GetRenderWindow());
     vtkRenderWindowInteractor *interactor=vtkRenderWindowInteractor::New();
     viewer->GetRenderWindow()->SetInteractor(interactor);
     
qvtk->GetRenderWindow()->SetInteractor(viewer->GetRenderWindow()->GetInteractor());/

How can i solve these problems?







05.03.2010 16:18, David Doria yazm?s,:
> On Fri, Mar 5, 2010 at 9:04 AM, sercani <sercanimailgroups at gmail.com 
> <mailto:sercanimailgroups at gmail.com>> wrote:
>
>     Hi everyone,
>     I've written subclass of vtkInteractorStyleImage and set it to an
>     interactor, but i need to set another custom interactorstyle in
>     runtime. When i want to delete the current custom interactor style
>     like this:
>     if(cis->GetEnabled())
>        {
>            cis->EnabledOff();
>            cis->SetInteractor(0);
>            cis->Delete();
>        }
>
>     it throws :
>
>     "ERROR: In ..\..\VTK_Source\VTK\Common\vtkObject.cxx, line 160
>     vtkObject (0155E128): Trying to delete object with non-zero
>     reference count."
>
>     How can i delete this custom interactorstyle and set another
>     custom interactorstyle as current interactor's new interactorstyle?
>
>
> Is cis a smart pointer? If so then you should let it delete itself 
> instead of deleting it manually - or if you want to delete it manually 
> then don't use a smart pointer. Can you send us some more code for 
> context?
>
> Thanks,
>
> David


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20100305/0313b145/attachment.htm>


More information about the vtkusers mailing list