首先他继承自public QVTKWidget, public mitk::RenderWindowBase这两个类
切换鼠标模式的代码在这里
void QmitkStdMultiWidget::SetWidgetPlaneMode(int userMode)
{
MITK_DEBUG << "Changing crosshair mode to " << userMode;
emit WidgetNotifyNewCrossHairMode(userMode);
// Convert user interface mode to actual mode
{
switch (userMode)
{
case 0:
m_MouseModeSwitcher->SetInteractionScheme(mitk::MouseModeSwitcher::InteractionScheme::MITK);
break;
case 1:
m_MouseModeSwitcher->SetInteractionScheme(mitk::MouseModeSwitcher::InteractionScheme::ROTATION);
break;
case 2:
m_MouseModeSwitcher->SetInteractionScheme(mitk::MouseModeSwitcher::InteractionScheme::ROTATIONLINKED);
break;
case 3:
m_MouseModeSwitcher->SetInteractionScheme(mitk::MouseModeSwitcher::InteractionScheme::SWIVEL);
break;
}
}
}
void mitk::MouseModeSwitcher::SetInteractionScheme(InteractionScheme scheme)
{
switch (scheme)
{
case MITK:
{
m_CurrentObserver->SetEventConfig("DisplayConfigMITK.xml");
}
break;
case PACS:
{
m_CurrentObserver->SetEventConfig("DisplayConfigPACS.xml");
}
break;
case ROTATION:
{
m_CurrentObserver->SetEventConfig("DisplayConfigMITKRotationUnCoupled.xml");
}
break;
case ROTATIONLINKED:
{
m_CurrentObserver->SetEventConfig("DisplayConfigMITKRotation.xml");
}
break;
case SWIVEL:
{
m_CurrentObserver->SetEventConfig("DisplayConfigMITKSwivel.xml");
}
break;
}
m_ActiveInteractionScheme = scheme;
this->InvokeEvent(MouseModeChangedEvent());
}
PlaneGeometryDataMapper2D
在进行mpor交互时负责线的绘制