Medical Imaging Interaction Toolkit  2026.06.00
Medical Imaging Interaction Toolkit
QmitkRenderWindow.h
Go to the documentation of this file.
1 /*============================================================================
2 
3 The Medical Imaging Interaction Toolkit (MITK)
4 
5 Copyright (c) German Cancer Research Center (DKFZ)
6 All rights reserved.
7 
8 Use of this source code is governed by a 3-clause BSD license that can be
9 found in the LICENSE file.
10 
11 ============================================================================*/
12 
13 #ifndef QmitkRenderWindow_h
14 #define QmitkRenderWindow_h
15 
16 #include <mitkRenderWindowBase.h>
17 
18 #include <QmitkRenderWindowMenu.h>
19 #include <MitkQtWidgetsExports.h>
20 
21 #include <vtkGenericOpenGLRenderWindow.h>
22 #include <QVTKOpenGLNativeWidget.h>
23 
24 #include <mitkBaseRenderer.h>
26 
28 
29 class QDragEnterEvent;
30 class QDropEvent;
31 class QInputEvent;
32 class QMouseEvent;
33 
38 class MITKQTWIDGETS_EXPORT QmitkRenderWindow : public QVTKOpenGLNativeWidget, public mitk::RenderWindowBase
39 {
40  Q_OBJECT
41 
42 public:
44  QWidget *parent = nullptr,
45  const QString &name = "unnamed renderwindow",
46  mitk::VtkPropRenderer *renderer = nullptr);
47  ~QmitkRenderWindow() override;
48 
65  virtual void SetResendQtEvents(bool resend);
66 
72 
75 
81 
86  void UpdateCrosshairVisibility(bool visible);
87 
92  void UpdateCrosshair3DVisibility(bool visible);
93 
99 
104  void ActivateMenuWidget(bool state);
105 
107  bool GetActivateMenuWidgetFlag() { return m_MenuWidgetActivated; }
108 
113  void ShowOverlayMessage(bool show);
114 
116  vtkRenderWindow *GetVtkRenderWindow() override { return this->renderWindow(); }
117 
119  vtkRenderWindowInteractor *GetVtkRenderWindowInteractor() override { return nullptr; }
120 
121 protected:
122 
123  // catch-all event handler
124  bool event(QEvent *e) override;
125  // overloaded move handler
126  void moveEvent(QMoveEvent *event) override;
127  // overloaded show handler
128  void showEvent(QShowEvent *event) override;
129  // overloaded enter handler
130  void enterEvent(QEnterEvent *) override;
131  // overloaded leave handler
132  void leaveEvent(QEvent *) override;
133 
134  // Overloaded resize handler, see decs in QVTKOpenGLWidget.
135  // Basically, we have to ensure the VTK rendering is updated for each change in window size.
136  void resizeGL(int w, int h) override;
137 
139  void dragEnterEvent(QDragEnterEvent *event) override;
140 
143  void dropEvent(QDropEvent *event) override;
144 
145 Q_SIGNALS:
146 
148 
149  void ResetView();
150 
152 
154 
156 
158 
159  void moved();
160 
162  void NodesDropped(QmitkRenderWindow *thisWindow, std::vector<mitk::DataNode *> nodes);
163 
164 private Q_SLOTS:
165 
166  void DeferredHideMenu();
167 
168 private:
169  // Helper Functions to Convert Qt-Events to Mitk-Events
170 
171  mitk::Point2D GetMousePosition(QMouseEvent *me) const;
172  mitk::Point2D GetMousePosition(QWheelEvent *we) const;
173  mitk::InteractionEvent::MouseButtons GetEventButton(QMouseEvent *me) const;
174  mitk::InteractionEvent::MouseButtons GetButtonState(QMouseEvent *me) const;
175  mitk::InteractionEvent::ModifierKeys GetModifiers(QInputEvent *me) const;
176  mitk::InteractionEvent::MouseButtons GetButtonState(QWheelEvent *we) const;
177  std::string GetKeyLetter(QKeyEvent *ke) const;
178  int GetDelta(QWheelEvent *we) const;
179 
180  void UpdateStatusBar(mitk::Point2D pointerPositionOnScreen);
181 
182  bool m_ResendQtEvents;
183 
184  QmitkRenderWindowMenu *m_MenuWidget;
185 
186  bool m_MenuWidgetActivated;
187 
189 
190  vtkSmartPointer<vtkGenericOpenGLRenderWindow> m_InternalRenderWindow;
191 
192  QmitkButtonOverlayWidget* m_GeometryViolationWarningOverlay;
193 
194 };
195 
196 #endif
#define MITKQTWIDGETS_EXPORT
The QmitkRenderWindowMenu is a popup Widget which shows up when the mouse cursor enter a QmitkRenderW...
MITK implementation of the QVTKWidget.
void ShowOverlayMessage(bool show)
Shows or hides the geometry violation warning overlay.
~QmitkRenderWindow() override
void showEvent(QShowEvent *event) override
void dropEvent(QDropEvent *event) override
If the dropped type is application/x-mitk-datanodes we process the request by converting to mitk::Dat...
void Crosshair3DVisibilityChanged(bool)
QmitkRenderWindow(QWidget *parent=nullptr, const QString &name="unnamed renderwindow", mitk::VtkPropRenderer *renderer=nullptr)
vtkRenderWindowInteractor * GetVtkRenderWindowInteractor() override
Returns nullptr since no interactor is used.
void CrosshairVisibilityChanged(bool)
void enterEvent(QEnterEvent *) override
void UpdateCrosshairVisibility(bool visible)
Updates the crosshair visibility state in the menu widget.
void NodesDropped(QmitkRenderWindow *thisWindow, std::vector< mitk::DataNode * > nodes)
Emits a signal to say that this window has had the following nodes dropped on it.
void UpdateCrosshairRotationMode(int mode)
Updates the crosshair rotation mode in the menu widget.
void moveEvent(QMoveEvent *event) override
void UpdateCrosshair3DVisibility(bool visible)
Updates the 3D-only crosshair visibility state in the menu widget.
void resizeGL(int w, int h) override
void leaveEvent(QEvent *) override
void UpdateLayoutDesignList(QmitkRenderWindowMenu::LayoutDesign layoutDesign)
Updates the layout design list in the menu widget when the layout has changed.
bool event(QEvent *e) override
virtual void SetResendQtEvents(bool resend)
Whether Qt events should be passed to parent (default: true)
QmitkRenderWindowMenu::LayoutIndex GetLayoutIndex()
Returns the current layout index.
bool GetActivateMenuWidgetFlag()
Returns whether the menu widget is activated.
vtkRenderWindow * GetVtkRenderWindow() override
Returns the underlying VTK render window.
void dragEnterEvent(QDragEnterEvent *event) override
Simply says we accept the event type.
void SetLayoutIndex(QmitkRenderWindowMenu::LayoutIndex layoutIndex)
Sets the layout index to define the layout type.
void LayoutDesignChanged(QmitkRenderWindowMenu::LayoutDesign)
void ActivateMenuWidget(bool state)
Activates or deactivates the render window menu widget.
void CrosshairRotationModeChanged(int)
ModifierKeys
Enumeration of keyboard modifier keys.
MouseButtons
Enumeration of mouse button states.
Base class of MITK RenderWindows.
Organizes the MITK rendering process within the VTK rendering pipeline.
AnatomicalPlane
Enumeration of standard anatomical image planes.