Signals | Public Member Functions | Protected Slots | Protected Member Functions

QmitkRenderWindow Class Reference
[Renderer and RenderWindow Classes]

MITK implementation of the QVTKWidget. More...

#include <QmitkRenderWindow.h>

Inheritance diagram for QmitkRenderWindow:
Inheritance graph
[legend]
Collaboration diagram for QmitkRenderWindow:
Collaboration graph
[legend]

List of all members.

Signals

void ResetView ()
void ChangeCrosshairRotationMode (int)
void SignalLayoutDesignChanged (int layoutDesignIndex)
void Moved ()

Public Member Functions

 QmitkRenderWindow (QWidget *parent=0, QString name="unnamed renderwindow", mitk::VtkPropRenderer *renderer=NULL, mitk::RenderingManager *renderingManager=NULL)
virtual ~QmitkRenderWindow ()
virtual void SetResendQtEvents (bool resend)
 Whether Qt events should be passed to parent (default: true)
void SetLayoutIndex (unsigned int layoutIndex)
unsigned int GetLayoutIndex ()
void LayoutDesignListChanged (int layoutDesignIndex)
void HideRenderWindowMenu ()
void ActivateMenuWidget (bool state)
bool GetActivateMenuWidgetFlag ()
virtual vtkRenderWindow * GetVtkRenderWindow ()
virtual vtkRenderWindowInteractor * GetVtkRenderWindowInteractor ()
void FullScreenMode (bool state)

Protected Slots

void OnChangeLayoutDesign (int layoutDesignIndex)
void OnWidgetPlaneModeChanged (int)
void DeferredHideMenu ()

Protected Member Functions

virtual void moveEvent (QMoveEvent *event)
void showEvent (QShowEvent *event)
virtual void resizeEvent (QResizeEvent *event)
virtual void mousePressEvent (QMouseEvent *event)
virtual void mouseMoveEvent (QMouseEvent *event)
virtual void mouseReleaseEvent (QMouseEvent *event)
virtual void keyPressEvent (QKeyEvent *event)
virtual void enterEvent (QEvent *)
virtual void leaveEvent (QEvent *)
virtual void wheelEvent (QWheelEvent *)
void AdjustRenderWindowMenuVisibility (const QPoint &pos)

Detailed Description

MITK implementation of the QVTKWidget.

Examples:

Step1.cpp, Step10.cpp, Step2.cpp, Step3.cpp, Step4.cpp, Step5.cpp, and Step6.cpp.

Definition at line 33 of file QmitkRenderWindow.h.


Constructor & Destructor Documentation

QmitkRenderWindow::QmitkRenderWindow ( QWidget *  parent = 0,
QString  name = "unnamed renderwindow",
mitk::VtkPropRenderer renderer = NULL,
mitk::RenderingManager renderingManager = NULL 
)

Definition at line 32 of file QmitkRenderWindow.cpp.

References ChangeCrosshairRotationMode(), mitk::RenderWindowBase::Initialize(), mitk::RenderWindowBase::m_Renderer, OnChangeLayoutDesign(), and ResetView().

: QVTKWidget(parent)
, m_ResendQtEvents(true)
, m_MenuWidget(NULL)
, m_MenuWidgetActivated(false)
{
  Initialize( renderingManager, name.toStdString().c_str() ); // Initialize mitkRenderWindowBase
 
  setFocusPolicy(Qt::StrongFocus);
  setMouseTracking(true);

  //create render window MenuBar for split, close Window or set new setting.
  m_MenuWidget = new QmitkRenderWindowMenu(this,0,m_Renderer);

  //create Signal/Slot Connection
  connect( m_MenuWidget, SIGNAL( SignalChangeLayoutDesign(int) ), this, SLOT(OnChangeLayoutDesign(int)) );
  connect( m_MenuWidget, SIGNAL( ResetView() ), this, SIGNAL( ResetView()) );
  connect( m_MenuWidget, SIGNAL( ChangeCrosshairRotationMode(int) ), this, SIGNAL( ChangeCrosshairRotationMode(int)) );
}
QmitkRenderWindow::~QmitkRenderWindow (  ) [virtual]

Definition at line 52 of file QmitkRenderWindow.cpp.

References mitk::RenderWindowBase::Destroy().

{
  Destroy(); // Destroy mitkRenderWindowBase
 
}

Member Function Documentation

void QmitkRenderWindow::ActivateMenuWidget ( bool  state ) [inline]

Definition at line 73 of file QmitkRenderWindow.h.

Referenced by QmitkStdMultiWidget::ActivateMenuWidget().

  {  m_MenuWidgetActivated = state; }
void QmitkRenderWindow::AdjustRenderWindowMenuVisibility ( const QPoint &  pos ) [protected]

Definition at line 218 of file QmitkRenderWindow.cpp.

References QmitkRenderWindowMenu::GetSettingsMenuVisibilty(), QuadProgPP::max(), min, QmitkRenderWindowMenu::MoveWidgetToCorrectPos(), and QmitkRenderWindowMenu::ShowMenu().

Referenced by mouseMoveEvent().

{
  if ( !m_MenuWidgetActivated )
    return;

/*  if( m_MenuWidget->GetLayoutIndex() <= QmitkRenderWindowMenu::CORONAL 
    && pos.x() >= 0
    && pos.y() <= m_MenuWidget->height() + 20 )
  {
    m_MenuWidget->ShowMenu();
    m_MenuWidget->MoveWidgetToCorrectPos();
  }
  else if( m_MenuWidget->GetLayoutIndex() == QmitkRenderWindowMenu::THREE_D  
    && pos.x() >= this->width() - m_MenuWidget->width() - 20 
    && pos.y() <= m_MenuWidget->height() + 20 )
  {
    m_MenuWidget->MoveWidgetToCorrectPos();
    m_MenuWidget->ShowMenu();
  }
  //Hide Menu Widget when mouse is outside of the define region of the the right corner
  */
  
  int min = m_MenuWidget->height() + 20;
  int max = m_MenuWidget->height() + 64;

  int y=pos.y();
  
  if( y <= max )
  {
    float opacity = 1.0f-(y-min)/float(max-min);
    m_MenuWidget->ShowMenu();
    m_MenuWidget->MoveWidgetToCorrectPos(opacity);
  }
  else if( !m_MenuWidget->GetSettingsMenuVisibilty() )
  {
    m_MenuWidget->hide();
  }    
}
void QmitkRenderWindow::ChangeCrosshairRotationMode ( int   ) [signal]

Referenced by QmitkRenderWindow().

void QmitkRenderWindow::DeferredHideMenu (  ) [protected, slot]

Definition at line 170 of file QmitkRenderWindow.cpp.

References QmitkRenderWindowMenu::HideMenu(), and MITK_DEBUG.

Referenced by leaveEvent().

{
  MITK_DEBUG << "QmitkRenderWindow::DeferredHideMenu";

  if( m_MenuWidget )
    m_MenuWidget->HideMenu();
}
void QmitkRenderWindow::enterEvent ( QEvent *  e ) [protected, virtual]

Definition at line 165 of file QmitkRenderWindow.cpp.

void QmitkRenderWindow::FullScreenMode ( bool  state )

Definition at line 278 of file QmitkRenderWindow.cpp.

References QmitkRenderWindowMenu::ChangeFullScreenMode().

{
  if( m_MenuWidget )
    m_MenuWidget->ChangeFullScreenMode( state );
}  
bool QmitkRenderWindow::GetActivateMenuWidgetFlag (  ) [inline]

Definition at line 76 of file QmitkRenderWindow.h.

  {  return m_MenuWidgetActivated; }
unsigned int QmitkRenderWindow::GetLayoutIndex (  )

Definition at line 69 of file QmitkRenderWindow.cpp.

References QmitkRenderWindowMenu::GetLayoutIndex().

{ 
  if( m_MenuWidget )
    return m_MenuWidget->GetLayoutIndex();
  else
    return NULL;
}
virtual vtkRenderWindow* QmitkRenderWindow::GetVtkRenderWindow (  ) [inline, virtual]

Implements mitk::RenderWindowBase.

Definition at line 80 of file QmitkRenderWindow.h.

  {  return GetRenderWindow();} 
virtual vtkRenderWindowInteractor* QmitkRenderWindow::GetVtkRenderWindowInteractor (  ) [inline, virtual]

Implements mitk::RenderWindowBase.

Definition at line 83 of file QmitkRenderWindow.h.

  {  return NULL;}
void QmitkRenderWindow::HideRenderWindowMenu (  )

Definition at line 257 of file QmitkRenderWindow.cpp.

Referenced by QmitkStdMultiWidget::HideAllWidgetToolbars().

{
  if ( !m_MenuWidgetActivated )
    return;

  m_MenuWidget->hide();
}
void QmitkRenderWindow::keyPressEvent ( QKeyEvent *  event ) [protected, virtual]

Definition at line 153 of file QmitkRenderWindow.cpp.

References QmitkEventAdapter::AdaptKeyEvent(), mitk::RenderWindowBase::keyPressMitkEvent(), and mitk::RenderWindowBase::m_Renderer.

{
  QPoint cp = mapFromGlobal(QCursor::pos());
  mitk::KeyEvent mke(QmitkEventAdapter::AdaptKeyEvent(m_Renderer, ke, cp));
  this->keyPressMitkEvent(&mke);
  ke->accept();

  QVTKWidget::keyPressEvent(ke);

  if (m_ResendQtEvents) ke->ignore();
}
void QmitkRenderWindow::LayoutDesignListChanged ( int  layoutDesignIndex )
void QmitkRenderWindow::leaveEvent ( QEvent *  e ) [protected, virtual]

Definition at line 178 of file QmitkRenderWindow.cpp.

References DeferredHideMenu(), and MITK_DEBUG.

{
  MITK_DEBUG << "QmitkRenderWindow::leaveEvent";

  //hide Menu Widget
  //if( m_MenuWidget->isVisible() && !m_MenuWidget->GetSettingsMenuVisibilty() && m_MenuWidgetActivated )
  //  m_MenuWidget->hide();
  
  QTimer::singleShot(0,this,SLOT( DeferredHideMenu( ) ) );

  QVTKWidget::leaveEvent(e);
}
void QmitkRenderWindow::mouseMoveEvent ( QMouseEvent *  event ) [protected, virtual]

Definition at line 103 of file QmitkRenderWindow.cpp.

References QmitkEventAdapter::AdaptMouseEvent(), AdjustRenderWindowMenuVisibility(), mitk::RenderWindowBase::m_Renderer, and mitk::RenderWindowBase::mouseMoveMitkEvent().

{
  this->AdjustRenderWindowMenuVisibility( me->pos() );

  
  mitk::MouseEvent myevent(QmitkEventAdapter::AdaptMouseEvent(m_Renderer, me));
  this->mouseMoveMitkEvent(&myevent);
  
  QVTKWidget::mouseMoveEvent(me);

  //if (m_ResendQtEvents) me->ignore();
  //if( m_MenuWidgetActivated )
  //{
  //  //Show Menu Widget when mouse is inside of the define region of the top right corner
  //  if( m_MenuWidget->GetLayoutIndex() <= QmitkRenderWindowMenu::CORONAL 
  //    && me->pos().x() >= 0
  //    && me->pos().y() <= m_MenuWidget->height() + 20 )
  //  {
  //    m_MenuWidget->MoveWidgetToCorrectPos(1.0);
  //    m_MenuWidget->show();
  //    m_MenuWidget->update();
  //  }
  //  else if( m_MenuWidget->GetLayoutIndex() == QmitkRenderWindowMenu::THREE_D  
  //    && me->pos().x() >= this->width() - m_MenuWidget->width() - 20 
  //    && me->pos().y() <= m_MenuWidget->height() + 20 )
  //  {
  //    m_MenuWidget->MoveWidgetToCorrectPos(1.0);
  //    m_MenuWidget->show();
  //    m_MenuWidget->update();
  //  }
  //  //Hide Menu Widget when mouse is outside of the define region of the the right corner
  //  else if( !m_MenuWidget->GetSettingsMenuVisibilty() )
  //  {
  //    m_MenuWidget->hide();
  //  }    
  //}
}
void QmitkRenderWindow::mousePressEvent ( QMouseEvent *  event ) [protected, virtual]
void QmitkRenderWindow::mouseReleaseEvent ( QMouseEvent *  event ) [protected, virtual]
void QmitkRenderWindow::Moved (  ) [signal]

Referenced by moveEvent(), and showEvent().

void QmitkRenderWindow::moveEvent ( QMoveEvent *  event ) [protected, virtual]

Definition at line 199 of file QmitkRenderWindow.cpp.

References Moved().

{
  QVTKWidget::moveEvent( event );

  // after a move the overlays need to be positioned
  emit Moved();
}
void QmitkRenderWindow::OnChangeLayoutDesign ( int  layoutDesignIndex ) [protected, slot]

Definition at line 266 of file QmitkRenderWindow.cpp.

References SignalLayoutDesignChanged().

Referenced by QmitkRenderWindow().

{
  
  emit SignalLayoutDesignChanged( layoutDesignIndex );
}
void QmitkRenderWindow::OnWidgetPlaneModeChanged ( int  mode ) [protected, slot]

Definition at line 272 of file QmitkRenderWindow.cpp.

References QmitkRenderWindowMenu::NotifyNewWidgetPlanesMode().

{
  if( m_MenuWidget )
    m_MenuWidget->NotifyNewWidgetPlanesMode( mode );
}
void QmitkRenderWindow::ResetView (  ) [signal]

Referenced by QmitkRenderWindow().

void QmitkRenderWindow::resizeEvent ( QResizeEvent *  event ) [protected, virtual]

Definition at line 191 of file QmitkRenderWindow.cpp.

References mitk::RenderWindowBase::resizeMitkEvent().

{
  this->resizeMitkEvent(event->size().width(), event->size().height());
  
  QVTKWidget::resizeEvent(event);
}
void QmitkRenderWindow::SetLayoutIndex ( unsigned int  layoutIndex )

Definition at line 63 of file QmitkRenderWindow.cpp.

References QmitkRenderWindowMenu::SetLayoutIndex().

Referenced by QmitkStdMultiWidget::QmitkStdMultiWidget().

{
  if( m_MenuWidget )
    m_MenuWidget->SetLayoutIndex(layoutIndex);
}
void QmitkRenderWindow::SetResendQtEvents ( bool  resend ) [virtual]

Whether Qt events should be passed to parent (default: true)

With introduction of the QVTKWidget the behaviour regarding Qt events changed. QVTKWidget "accepts" Qt events like mouse clicks (i.e. set an "accepted" flag). When this flag is set, Qt fininshed handling of this event -- otherwise it is reached through to the widget's parent.

This reaching through to the parent was implicitly required by QmitkMaterialWidget / QmitkMaterialShowCase.

The default behaviour of QmitkRenderWindow is now to clear the "accepted" flag of Qt events after they were handled by QVTKWidget. This way parents can also handle events.

If you don't want this behaviour, call SetResendQtEvents(true) on your render window.

Definition at line 58 of file QmitkRenderWindow.cpp.

{
  m_ResendQtEvents = resend;
}
void QmitkRenderWindow::showEvent ( QShowEvent *  event ) [protected]

Definition at line 208 of file QmitkRenderWindow.cpp.

References Moved().

{
  QVTKWidget::showEvent( event );

  // this singleshot is necessary to have the overlays positioned correctly after initial show
  // simple call of Moved() is no use here!!
  QTimer::singleShot(0, this ,SIGNAL( Moved() ) );
}
void QmitkRenderWindow::SignalLayoutDesignChanged ( int  layoutDesignIndex ) [signal]

Referenced by OnChangeLayoutDesign().

void QmitkRenderWindow::wheelEvent ( QWheelEvent *  we ) [protected, virtual]

The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines