MITK implementation of the QVTKWidget. More...
#include <QmitkRenderWindow.h>
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) |
MITK implementation of the QVTKWidget.
Definition at line 33 of file QmitkRenderWindow.h.
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 }
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.
{ QVTKWidget::enterEvent(e); }
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 ) |
Definition at line 77 of file QmitkRenderWindow.cpp.
References QmitkRenderWindowMenu::UpdateLayoutDesignList().
Referenced by QmitkStdMultiWidget::changeLayoutTo2DImagesLeft(), QmitkStdMultiWidget::changeLayoutTo2DImagesUp(), QmitkStdMultiWidget::changeLayoutTo2DUpAnd3DDown(), QmitkStdMultiWidget::changeLayoutTo2x2Dand3DWidget(), QmitkStdMultiWidget::changeLayoutToBig3D(), QmitkStdMultiWidget::changeLayoutToColumnWidget3And4(), QmitkStdMultiWidget::changeLayoutToDefault(), QmitkStdMultiWidget::changeLayoutToLeft2Dand3DRight2D(), QmitkStdMultiWidget::changeLayoutToRowWidget3And4(), QmitkStdMultiWidget::changeLayoutToSmallUpperWidget2Big3and4(), QmitkStdMultiWidget::changeLayoutToWidget1(), QmitkStdMultiWidget::changeLayoutToWidget2(), and QmitkStdMultiWidget::changeLayoutToWidget3().
{ if( m_MenuWidget ) m_MenuWidget->UpdateLayoutDesignList( 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] |
Definition at line 83 of file QmitkRenderWindow.cpp.
References QmitkEventAdapter::AdaptMouseEvent(), mitk::RenderWindowBase::m_Renderer, and mitk::RenderWindowBase::mousePressMitkEvent().
{ mitk::MouseEvent myevent(QmitkEventAdapter::AdaptMouseEvent(m_Renderer, me)); this->mousePressMitkEvent(&myevent); QVTKWidget::mousePressEvent(me); if (m_ResendQtEvents) me->ignore(); }
void QmitkRenderWindow::mouseReleaseEvent | ( | QMouseEvent * | event ) | [protected, virtual] |
Definition at line 93 of file QmitkRenderWindow.cpp.
References QmitkEventAdapter::AdaptMouseEvent(), mitk::RenderWindowBase::m_Renderer, and mitk::RenderWindowBase::mouseReleaseMitkEvent().
{ mitk::MouseEvent myevent(QmitkEventAdapter::AdaptMouseEvent(m_Renderer, me)); this->mouseReleaseMitkEvent(&myevent); QVTKWidget::mouseReleaseEvent(me); if (m_ResendQtEvents) me->ignore(); }
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] |
Definition at line 142 of file QmitkRenderWindow.cpp.
References QmitkEventAdapter::AdaptWheelEvent(), mitk::RenderWindowBase::m_Renderer, and mitk::RenderWindowBase::wheelMitkEvent().
{ mitk::WheelEvent myevent(QmitkEventAdapter::AdaptWheelEvent(m_Renderer, we)); this->wheelMitkEvent(&myevent); QVTKWidget::wheelEvent(we); if (m_ResendQtEvents) we->ignore(); }