Medical Imaging Interaction Toolkit  2025.12.02
Medical Imaging Interaction Toolkit
QmitkAbstractMultiWidget.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 QmitkAbstractMultiWidget_h
14 #define QmitkAbstractMultiWidget_h
15 
16 // mitk qt widgets module
17 #include "MitkQtWidgetsExports.h"
18 
19 // mitk core
20 #include <mitkBaseRenderer.h>
23 #include <mitkPoint.h>
24 
25 // qt
26 #include <QWidget>
27 
28 // c++
29 #include <map>
30 #include <memory>
31 
33 class QmitkRenderWindow;
35 
36 namespace mitk
37 {
38  class DataStorage;
39  class InteractionEventHandler;
40 }
41 
54 {
55  Q_OBJECT
56 
57 public:
58 
59  using RenderWindowWidgetPointer = std::shared_ptr<QmitkRenderWindowWidget>;
60  using RenderWindowWidgetMap = std::map<QString, std::shared_ptr<QmitkRenderWindowWidget>>;
61  using RenderWindowHash = QHash<QString, QmitkRenderWindow*>;
62 
63  QmitkAbstractMultiWidget(QWidget* parent = 0,
64  Qt::WindowFlags f = {},
65  const QString& multiWidgetName = "multiwidget");
66 
68 
69  virtual void InitializeMultiWidget() = 0;
70  virtual void MultiWidgetOpened() { }
71  virtual void MultiWidgetClosed() { }
72 
73  virtual void SetDataStorage(mitk::DataStorage* dataStorage);
75 
76  int GetRowCount() const;
77  int GetColumnCount() const;
78  virtual void SetLayout(int row, int column);
79 
80  virtual void Synchronize(bool) { };
82 
84  void SetDisplayActionEventHandler(std::unique_ptr<mitk::DisplayActionEventHandler> displayActionEventHandler);
86 
91  RenderWindowWidgetPointer GetRenderWindowWidget(const QString& widgetName) const;
94  QmitkRenderWindow* GetRenderWindow(int row, int column) const;
95  virtual QmitkRenderWindow* GetRenderWindow(const QString& widgetName) const;
96  virtual QmitkRenderWindow* GetRenderWindow(const mitk::AnatomicalPlane& orientation) const = 0;
97 
98  virtual void SetActiveRenderWindowWidget(RenderWindowWidgetPointer activeRenderWindowWidget);
102 
103  QString GetMultiWidgetName() const;
104  virtual QString GetNameFromIndex(int row, int column) const;
105  virtual QString GetNameFromIndex(size_t index) const;
106 
107  unsigned int GetNumberOfRenderWindowWidgets() const;
108 
109  void RequestUpdate(const QString& widgetName);
111  void ForceImmediateUpdate(const QString& widgetName);
113 
125  virtual void InitializeViews(const mitk::TimeGeometry* geometry, bool resetCamera) = 0;
126 
135  virtual void SetInteractionReferenceGeometry(const mitk::TimeGeometry* referenceGeometry) = 0;
136 
143  virtual bool HasCoupledRenderWindows() const = 0;
144 
145  virtual void SetSelectedPosition(const mitk::Point3D& newPosition, const QString& widgetName) = 0;
146  virtual const mitk::Point3D GetSelectedPosition(const QString& widgetName) const = 0;
147 
148  virtual void SetCrosshairVisibility(bool visible) = 0;
149  virtual bool GetCrosshairVisibility() const = 0;
150  virtual void SetCrosshairGap(unsigned int gapSize) = 0;
151 
152  virtual void ResetCrosshair() = 0;
153 
154  virtual void SetWidgetPlaneMode(int mode) = 0;
155 
156  virtual void ActivateMenuWidget(bool state);
157  virtual bool IsMenuWidgetEnabled() const;
158 
160 
161 signals:
162 
164 
165 private slots:
166 
167  void OnFocusChanged(itk::Object*, const itk::EventObject& event);
168 
169 protected:
170 
171  virtual void AddRenderWindowWidget(const QString& widgetName, RenderWindowWidgetPointer renderWindowWidget);
172  virtual void RemoveRenderWindowWidget();
173 
174 private:
175 
180  virtual void SetLayoutImpl() = 0;
185  virtual void SetInteractionSchemeImpl() = 0;
186 
187  struct Impl;
188  std::unique_ptr<Impl> m_Impl;
189 
190 };
191 
192 #endif
#define MITKQTWIDGETS_EXPORT
The 'QmitkAbstractMultiWidget' is a 'QWidget' that can be subclassed to display multiple render windo...
void RequestUpdate(const QString &widgetName)
virtual void RemoveRenderWindowWidget()
virtual bool IsMenuWidgetEnabled() const
RenderWindowHash GetRenderWindows() const
mitk::InteractionEventHandler * GetInteractionEventHandler()
virtual QString GetNameFromIndex(int row, int column) const
virtual void SetLayout(int row, int column)
void SetDisplayActionEventHandler(std::unique_ptr< mitk::DisplayActionEventHandler > displayActionEventHandler)
RenderWindowWidgetPointer GetRenderWindowWidget(const QmitkRenderWindow *renderWindow) const
RenderWindowWidgetMap Get3DRenderWindowWidgets() const
QmitkAbstractMultiWidget(QWidget *parent=0, Qt::WindowFlags f={}, const QString &multiWidgetName="multiwidget")
std::map< QString, std::shared_ptr< QmitkRenderWindowWidget > > RenderWindowWidgetMap
virtual void SetDataStorage(mitk::DataStorage *dataStorage)
QmitkMultiWidgetLayoutManager * GetMultiWidgetLayoutManager() const
QString GetMultiWidgetName() const
virtual void SetInteractionScheme(mitk::InteractionSchemeSwitcher::InteractionScheme scheme)
virtual void InitializeMultiWidget()=0
virtual bool GetCrosshairVisibility() const =0
virtual void AddRenderWindowWidget(const QString &widgetName, RenderWindowWidgetPointer renderWindowWidget)
RenderWindowWidgetPointer GetFirstRenderWindowWidget() const
virtual void InitializeViews(const mitk::TimeGeometry *geometry, bool resetCamera)=0
Initialize the render windows of the concrete multi widget to the given geometry.
unsigned int GetNumberOfRenderWindowWidgets() const
RenderWindowWidgetPointer GetRenderWindowWidget(const QString &widgetName) const
virtual void ResetCrosshair()=0
virtual void SetCrosshairGap(unsigned int gapSize)=0
std::shared_ptr< QmitkRenderWindowWidget > RenderWindowWidgetPointer
virtual void SetSelectedPosition(const mitk::Point3D &newPosition, const QString &widgetName)=0
virtual void SetInteractionReferenceGeometry(const mitk::TimeGeometry *referenceGeometry)=0
Define the reference geometry for interaction within a render window.
mitk::DisplayActionEventHandler * GetDisplayActionEventHandler()
virtual QString GetNameFromIndex(size_t index) const
virtual QmitkRenderWindow * GetRenderWindow(const QString &widgetName) const
QmitkRenderWindow * GetRenderWindow(int row, int column) const
virtual QmitkRenderWindow * GetRenderWindow(const mitk::AnatomicalPlane &orientation) const =0
RenderWindowWidgetPointer GetRenderWindowWidget(int row, int column) const
virtual void SetCrosshairVisibility(bool visible)=0
virtual bool HasCoupledRenderWindows() const =0
Returns true if the render windows are coupled; false if not.
mitk::DataStorage * GetDataStorage() const
virtual void ActivateMenuWidget(bool state)
RenderWindowWidgetPointer GetActiveRenderWindowWidget() const
virtual void SetWidgetPlaneMode(int mode)=0
virtual const mitk::Point3D GetSelectedPosition(const QString &widgetName) const =0
QHash< QString, QmitkRenderWindow * > RenderWindowHash
void ForceImmediateUpdate(const QString &widgetName)
RenderWindowWidgetMap GetRenderWindowWidgets() const
RenderWindowWidgetMap Get2DRenderWindowWidgets() const
virtual void SetActiveRenderWindowWidget(RenderWindowWidgetPointer activeRenderWindowWidget)
RenderWindowWidgetPointer GetLastRenderWindowWidget() const
virtual ~QmitkAbstractMultiWidget()
The layout manager provides different layout-functions that can modify the layout of an QmitkAbstract...
The 'QmitkRenderWindowWidget' is a QFrame that holds a render window and some associates properties,...
MITK implementation of the QVTKWidget.
Data management class that handles 'was created by' relations.
This class simplifies the process of adding an itkEventObject-itkCommand pair as an observer of a Dis...
Find image slices visible on a given plane.