[vtkusers] Interactor on vtkWidget

Leonardo M. Ramé l.rame at griensu.com
Tue Sep 21 10:30:20 EDT 2010


On 2010-09-21 15:25:34 +0100, Jothy wrote:
> 
> On Tue, Sep 21, 2010 at 3:20 PM, Leonardo M. Ramé <l.rame at griensu.com>wrote:
> 
> > Hi, I created a vtkDistanceWidget, and added an observer to catch the
> > "delete" key on that widget, to be able to delete it from the scene.
> >
> > The problem is that key events are captured for the whole interactor,
> > and not for my specific widget. How can I know what was the active
> > widget at the moment of pressing the delete key?.
> >
> >
> > This is my code:
> >
> > void widgetPickObserver(vtkObject* caller, unsigned long eid, void*
> > clientdata, void *calldata)
> > {
> >  qDebug(static_cast<vtkRenderWindowInteractor*>(caller)->GetKeySym());
> > }
> >
> > void myClass::addDistanceWidget()
> > {
> >  distanceWidget = vtkDistanceWidget::New();
> >  distanceWidget->SetInteractor(this->GetInteractor());
> >  distanceWidget->CreateDefaultRepresentation();
> >  static_cast<vtkDistanceRepresentation
> > *>(distanceWidget->GetRepresentation())->SetLabelFormat("%-#6.3g mm");
> >
> >  vtkSmartPointer<vtkCallbackCommand> Callback =
> > vtkSmartPointer<vtkCallbackCommand>::New();
> >  Callback->SetCallback(widgetPickObserver);
> >  Callback->SetClientData(distanceWidget);
> >
> >  distanceWidget->GetInteractor()->AddObserver(vtkCommand::KeyPressEvent,
> > Callback);
> >  distanceWidget->On();
> > }
> >
> >
> > --
> > Leonardo M. Ramé
> > http://leonardorame.blogspot.com

> What I did in my Qt program was - used a toggle button on the toolbar to
> enable and disable the distance widget.
> 
> Jothy

Yes, but what if you need more than one distance widgets? how do you
know which one is selected?

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



More information about the vtkusers mailing list