vtkWidget屏蔽默认交互¶
**vtk widget**默认带一些常用交互,但有时候我们需要屏蔽(修改)默认交互事件。可以使用**vtkWidgetEventTranslator**来屏蔽/修改默认交互。
默认交互
操作 | 交互 |
---|---|
左键按下 | 触发选择事件 |
右键按下 | 触发AddFinalPoint事件 |
鼠标移动 | 触发移动事件 |
左键松开 | 触发EndSelect事件 |
Delete按键 | 触发删除事件 |
Shift+Delete按键 | 触发重置事件 |
如果在红色边缘附近按下鼠标中键,则会触发整体移动事件。我想屏蔽这种交互,只需要
if (this->widget_left_ == nullptr) {
this->widget_left_ = vtkSmartPointer<vtkContourWidget>::New();
}
if (this->widget_right_ == nullptr) {
this->widget_right_ = vtkSmartPointer<vtkContourWidget>::New();
}
vtkWidgetEventTranslator *event_translator_left = widget_left_->GetEventTranslator();
event_translator_left->SetTranslation(
vtkCommand::MiddleButtonPressEvent, vtkWidgetEvent::NoEvent);
event_translator_left->SetTranslation(
vtkCommand::MiddleButtonReleaseEvent, vtkWidgetEvent::NoEvent);
vtkWidgetEventTranslator *event_translator_right = widget_right_->GetEventTranslator();
event_translator_right->SetTranslation(
vtkCommand::MiddleButtonPressEvent, vtkWidgetEvent::NoEvent);
event_translator_right->SetTranslation(
vtkCommand::MiddleButtonReleaseEvent, vtkWidgetEvent::NoEvent);