前言:本博文为系列博文,尝试将vtk交互功能讲清楚,包括常用的接口分析、常用的交互逻辑以及常用的交互Widget。若各位小伙伴有需要请多多关注,也希望能给各位小伙伴有所帮助。vtkCommand作为callback/obseve交互模式的基类,提供了很多基础和可继承的方法,那么我们就从vtkCommand开始。
vtkCommand
描述:
vtkCommand是callback/obseve交互模式的一个实现。这个设计模式下,可以“观察”到对象(任何vtkObject的实例)触发的任何事件。例如:vtkRenderer在开始渲染时触发StartEvent事件,在结束渲染时触发EndEvent事件。事件观察者是通过在vtkObject中找到的AddObserver()方法添加的。AddObserver()除了需要一个事件id或名称外,还需要一个vtkCommand的实例(或子类)。请注意,vtkCommand意味着子类化,因此您可以打包支持回调所需的信息。
所有事件的处理在priority list列表中组织,可以通过设置AbortFlag变量截断特定事件的处理。使用AddObserver()方法设置优先级。缺省情况下,优先级为0,优先级相同的事件按照后发先处的顺序进行顺序处理。对于像3DWidget这类窗口来说,事件的ordering/aborting很重要。如果小部件被选中,它将处理一个事件(然后中止对该事件的进一步处理)。否则。该事件被传递以进行进一步处理。
当vtkObject的实例调用事件时,它也传递一个可选的void指针给callData。这个callData大多数时候是null。callData不是特定于事件类型,而是特定于调用特定事件的vtkObject类型。例如,vtkCommand::PickEvent由vtkProp使用nullptr callData调用,但由vtkInteractorStyleImage使用指向vtkInteractorStyleImage对象本身的指针调用。
通过non-nullptr触发的事件列表
vtkCommand::ProgressEvent | -大多数对象返回一个指针,指向范围在0.0到1.0之间的双精度值 -Infovis/vtkFixedWidthTextReader返回一个指针,浮点值等于到目前为止读取的行数。 |
vtkCommand::ErrorEvent | - 返回const char*类型的错误信息。 |
vtkCommand::WarningEvent | - 返回const char*类型的错误信息。 |
vtkCommand::StartAnimationCueEvent | - 返回指向vtkAnimationCue::AnimationCueInfo的指针 |
vtkCommand::EndAnimationCueEvent | - 返回指向vtkAnimationCue::AnimationCueInfo的指针 |
vtkCommand::AnimationCueTickEvent | - 返回指向vtkAnimationCue::AnimationCueInfo的指针 |
vtkCommand::PickEvent | - Common/vtkProp返回nullptr - Rendering/vtkInteractorStyleImage返回指向自身的指针 |
vtkCommand::StartPickEvent | - Common/vtkProp返回nullptr - Rendering/vtkInteractorStyleImage返回指向自身的指针 |
vtkCommand::EndPickEvent | - Common/vtkProp返回nullptr - Rendering/vtkInteractorStyleImage返回指向自身的指针 |
vtkCommand::WrongTagEvent | - Parallel/vtkSocketCommunicator返回一个char* 类型的标签 |
vtkCommand::SelectionChangedEvent | - Views/vtkView返回空指针 - Views/vtkDataRepresentation返回一个指向vtkSelection的指针 - Rendering/ vtkInteractorStyleRubberBand2D在vtkInteractorStyleRubberBand2D ::SELECT_UNION或vtkInteractorStyleRubberBand2D ::SELECT_NORMAL时返回一个包含五个无符号的Int类型的矩阵 |
vtkCommand::AnnotationChangedEvent | - GUISupport/Qt/vtkQtAnnotationView返回一个指向vtkAnnotationLayers的指针 |
vtkCommand::PlacePointEvent | - Widgets/vtkSeedWidget返回一个指向int类型的指针,指向当前Handle的Number |
vtkCommand::DeletePointEvent | - Widgets/vtkSeedWidget返回一个指向int类型的指针,指向当前删除的Handle的Number |
vtkCommand::ResetWindowLevelEvent | - Widgets/vtkImagePlaneWidget返回两个double值(window和level) - Rendering/vtkInteractorStyleImage返回一个指向自身的指针 |
vtkCommand::StartWindowLevelEvent | - Widgets/vtkImagePlaneWidget返回两个double值(window和level) - Rendering/vtkInteractorStyleImage返回一个指向自身的指针 |
vtkCommand::EndWindowLevelEvent | - Widgets/vtkImagePlaneWidget返回两个double值(window和level) - Rendering/vtkInteractorStyleImage返回一个指向自身的指针 |
vtkCommand::WindowLevelEvent | - Widgets/vtkImagePlaneWidget返回两个double值(window和level) - Rendering/vtkInteractorStyleImage返回一个指向自身的指针 |
vtkCommand::CharEvent | - 大多数对象返回空指针 - GUISupport/Qt/ QVTKOpenGLStereoWidget返回QKeyEvent* |
vtkCommand::TimerEvent | - 大多数对象返回一个代表timer ID的Int类型 - Widgets/vtkHoverWidget返回nullptr |
vtkCommand::CreateTimerEvent | - Rendering/ vtkGenericRenderWindowInteractor返回一个Interesting类型代表timer的ID |
vtkCommand::DestroyTimerEvent | - Rendering/ vtkGenericRenderWindowInteractor返回一个Interesting类型代表timer的ID |
vtkCommand::UserEvent | - 大多数对象返回空指针 - Infovis/vtkInteractorStyleTreeMapHover返回一个vtkIdType的指针,代表pedigree id |
vtkCommand::KeyPressEvent | - 大多数对象返回空指针 - GUISupport/Qt/ QVTKOpenGLStereoWidget返回QKeyEvent* |
vtkCommand::KeyReleaseEvent | - 大多数对象返回空指针 - GUISupport/Qt/ QVTKOpenGLStereoWidget返回QKeyEvent* |
vtkCommand::LeftButtonPressEvent | - 大多数对象返回空指针 - GUISupport/Qt/ QVTKOpenGLStereoWidget返回QMouseEvent* |
vtkCommand::LeftButtonReleaseEvent | - 大多数对象返回空指针 - GUISupport/Qt/ QVTKOpenGLStereoWidget返回QMouseEvent* |
vtkCommand::MouseMoveEvent | - 大多数对象返回空指针 - GUISupport/Qt/ QVTKOpenGLStereoWidget返回QMouseEvent* |
vtkCommand::MouseWheelForwardEvent | - 大多数对象返回空指针 - GUISupport/Qt/ QVTKOpenGLStereoWidget返回QWheelEvent* |
vtkCommand::MouseWheelBackwardEvent | - 大多数对象返回空指针 - GUISupport/Qt/ QVTKOpenGLStereoWidget返回QWheelEvent* |
vtkCommand::RightButtonPressEvent | - 大多数对象返回空指针 - GUISupport/Qt/ QVTKOpenGLStereoWidget返回QMouseEvent* |
vtkCommand::RightButtonReleaseEvent | - 大多数对象返回空指针 - GUISupport/Qt/ QVTKOpenGLStereoWidget返回QMouseEvent* |
vtkCommand::MiddleButtonPressEvent | - 大多数对象返回空指针 - GUISupport/Qt/ QVTKOpenGLStereoWidget返回QMouseEvent* |
vtkCommand::MiddleButtonReleaseEvent | - 大多数对象返回空指针 - GUISupport/Qt/ QVTKOpenGLStereoWidget返回QMouseEvent* |
vtkCommand::CursorChangedEvent | - 大多数对象返回一个指向表示形状的int型指针 - Rendering/vtkInteractorObserver 返回空指针 |
vtkCommand::ResetCameraEvent | - Rendering/vtkRenderer返回指向自己的指针 |
vtkCommand::ResetCameraClippingRangeEvent | - Rendering/vtkRenderer返回指向自己的指针 |
vtkCommand::ActiveCameraEvent | - Rendering/vtkRenderer返回指向当前活动相机的指针 |
vtkCommand::CreateCameraEvent | - Rendering/vtkRenderer返回指向新建相机的指针 |
vtkCommand::EnterEvent | - 大多数对象返回空指针 - GUISupport/Qt/ QVTKOpenGLStereoWidget 返回一个QEvent* |
vtkCommand::LeaveEvent | - 大多数对象返回空指针 - GUISupport/Qt/ QVTKOpenGLStereoWidget 返回一个QEvent* |
vtkCommand::RenderWindowMessageEvent | - Rendering/ vtkWin32OpenGLRenderWindow 返回一个指向UINT的信息 |
vtkCommand::ComputeVisiblePropBoundsEvent | - Rendering/vtkRenderer返回指向自身的指针 |
QVTKOpenGLStereoWidget::ContextMenuEvent | - 返回GUISupport/Qt/ QVTKOpenGLStereoWidget的一个QDragEnterEvent* |
QVTKOpenGLStereoWidget::DragEnterEvent | - 返回GUISupport/Qt/ QVTKOpenGLStereoWidget的一个QDragEnterEvent* |
QVTKOpenGLStereoWidget::DragMoveEvent | - 返回GUISupport/Qt/ QVTKOpenGLStereoWidget的一个QDragMoveEvent* |
QVTKOpenGLStereoWidget::DragLeaveEvent | - 返回GUISupport/Qt/ QVTKOpenGLStereoWidget的一个QDragLeaveEvent* |
QVTKOpenGLStereoWidget::DropEvent | - 返回GUISupport/Qt/ QVTKOpenGLStereoWidget的一个QDropEvent* |
vtkCommand::ViewProgressEvent | - 返回View/vtkView的一个ViewProgressEventCallData* |
vtkCommand::VolumeMapperRenderProgressEvent | - 返回指向范围在0.0到1.0之间的double值 |
vtkCommand::VolumeMapperComputeGradientsProgressEvent | - 返回指向范围在0.0到1.0之间的double值 |
vtkCommand::TDxMotionEvent (TDx=3DConnexion) | vtkTDxMotionEventInfo* |
vtkCommand::TDxButtonPressEvent | 一个int*是按钮的编号 |
vtkCommand::TDxButtonReleaseEvent | 一个int*是按钮的编号 |
vtkCommand::UpdateShaderEvent | 当前正在使用的vtkOpenGLHelper* |
vtkCommand::FourthButtonPressEvent | - 大多数对象返回nullptr |
vtkCommand::FourthButtonReleaseEvent | - 大多数对象返回nullptr |
vtkCommand::FifthButtonPressEvent | - 大多数对象返回nullptr |
vtkCommand::FifthButtonReleaseEvent | - 大多数对象返回nullptr |
vtkCommand::ErrorEvent | vtkoutputwwindow使用' char char* '为错误信息触发 |
vtkCommand::WarningEvent | vtkoutputwwindow使用' char char* '为警告信息触发 |
vtkCommand::MessageEvent | vtkoutputwwindow使用' char char* '为信息文本触发 |
vtkCommand::TextEvent | vtkoutputwwindow使用' char char* '为文本触发 |