Medical Imaging Interaction Toolkit  2025.12.02
Medical Imaging Interaction Toolkit
QmitkSliceNavigationListener.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 
14 #ifndef QmitkSliceNavigationListener_h
15 #define QmitkSliceNavigationListener_h
16 
17 #include <mitkTimeGeometry.h>
18 #include <mitkPoint.h>
19 
20 #include <itkEventObject.h>
21 
22 #include <QObject>
23 
25 
26 namespace itk
27 {
28  class Object;
29 }
30 
31 namespace mitk
32 {
33  class SliceNavigationController;
34  struct IRenderWindowPart;
35 }
36 
37 
66  {
67  Q_OBJECT
68 
69  public:
72 
75 
76  signals:
78  void SliceChanged();
81  void SelectedTimePointChanged(const mitk::TimePointType& newTimePoint);
84  void SelectedPositionChanged(const mitk::Point3D& newPoint);
85 
86  public slots:
90 
91  protected slots:
94 
95  protected:
96 
98  void OnSliceChangedInternal(const itk::EventObject& e);
99  void OnTimeChangedInternal(itk::Object* sender, const itk::EventObject& e);
100 
101  void OnSliceNavigationControllerDeleted(const itk::Object* sender, const itk::EventObject& /*e*/);
102 
108  void RemoveAllObservers(mitk::IRenderWindowPart* deletedPart = nullptr);
109 
111 
113 
114  // Needed for observing the events for when a slice or time step is changed.
116 
119  {
122  std::string renderWindowName;
124 
125  ObserverInfo(mitk::SliceNavigationController* controller, int observerTag,
126  const std::string& renderWindowName, mitk::IRenderWindowPart* part);
127  };
128 
129  typedef std::multimap<const mitk::SliceNavigationController*, ObserverInfo> ObserverMapType;
132 
135  };
136 
137 #endif
Helper class to allow QmitkAbstractView and derived classes to react on changes of the slice/time nav...
void RemoveAllObservers(mitk::IRenderWindowPart *deletedPart=nullptr)
mitk::IRenderWindowPart * m_renderWindowPart
void OnSliceChangedInternal(const itk::EventObject &e)
Calls OnSliceChangedDelayed so the event isn't triggered multiple times.
void SelectedTimePointChanged(const mitk::TimePointType &newTimePoint)
~QmitkSliceNavigationListener() override
void OnTimeChangedInternal(itk::Object *sender, const itk::EventObject &e)
void RenderWindowPartActivated(mitk::IRenderWindowPart *renderWindowPart)
std::multimap< const mitk::SliceNavigationController *, ObserverInfo > ObserverMapType
void RemoveObservers(const mitk::SliceNavigationController *deletedSlicer)
void SelectedPositionChanged(const mitk::Point3D &newPoint)
void RenderWindowPartInputChanged(mitk::IRenderWindowPart *renderWindowPart)
mitk::TimePointType GetCurrentSelectedTimePoint() const
void RenderWindowPartDeactivated(mitk::IRenderWindowPart *renderWindowPart)
mitk::Point3D GetCurrentSelectedPosition() const
void OnSliceNavigationControllerDeleted(const itk::Object *sender, const itk::EventObject &)
bool ObserversInitialized(mitk::SliceNavigationController *controller)
Controls the selection of the slice the associated BaseRenderer will display.
Find image slices visible on a given plane.
mitk::ScalarType TimePointType
#define MITK_QT_COMMON
ObserverInfo(mitk::SliceNavigationController *controller, int observerTag, const std::string &renderWindowName, mitk::IRenderWindowPart *part)
Interface for a MITK Workbench Part providing a render window.