Slicer 5.6
Slicer is a multi-platform, free and open source software package for visualization and medical image computing
Loading...
Searching...
No Matches
qMRMLCoordinatesWidget.h
Go to the documentation of this file.
1/*==============================================================================
2
3 Program: 3D Slicer
4
5 Copyright (c) Kitware Inc.
6
7 See COPYRIGHT.txt
8 or http://www.slicer.org/copyright/copyright.txt for details.
9
10 Unless required by applicable law or agreed to in writing, software
11 distributed under the License is distributed on an "AS IS" BASIS,
12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 See the License for the specific language governing permissions and
14 limitations under the License.
15
16 This file was originally developed by Johan Andruejol, Kitware Inc.
17 and was partially funded by NIH grant 3P41RR013218-12S1
18
19==============================================================================*/
20
21#ifndef __qMRMLCoordinatesWidget_h
22#define __qMRMLCoordinatesWidget_h
23
24// Qt includes
25class QWidget;
26
27// CTK includes
28#include <ctkCoordinatesWidget.h>
29#include <ctkVTKObject.h>
30
31// qMRML includes
32#include "qMRMLWidgetsExport.h"
33
34// VTK includes
35class vtkMRMLNode;
36class vtkMRMLScene;
37
38// qMRMLSpinBox includes
39class qMRMLCoordinatesWidgetPrivate;
40
53//
58class QMRML_WIDGETS_EXPORT qMRMLCoordinatesWidget : public ctkCoordinatesWidget
59{
60 Q_OBJECT
61 QVTK_OBJECT
62
66 // \sa setQuantity(), quantity()
67 Q_PROPERTY(QString quantity READ quantity WRITE setQuantity NOTIFY quantityChanged)
68
69
74 // \sa setUnitAwareProperties(), unitAwareProperties()
75 Q_FLAGS(UnitAwareProperty UnitAwareProperties)
76 Q_PROPERTY(UnitAwareProperties unitAwareProperties READ unitAwareProperties WRITE setUnitAwareProperties)
77
78public:
79 typedef ctkCoordinatesWidget Superclass;
80
82 explicit qMRMLCoordinatesWidget(QWidget* parent = nullptr);
84
86 {
87 None = 0x00,
88 Prefix = 0x01,
89 Suffix = 0x02,
90 Precision = 0x04,
91 MinimumValue = 0x08,
92 MaximumValue = 0x10,
93 Scaling = 0x20,
94 All = Prefix | Suffix | Precision | MinimumValue | MaximumValue | Scaling
95 };
96 Q_DECLARE_FLAGS(UnitAwareProperties, UnitAwareProperty)
97
98
100 Q_INVOKABLE vtkMRMLScene* mrmlScene() const;
101
102 QString quantity() const;
103
104 UnitAwareProperties unitAwareProperties()const;
105
106public slots:
107 void setQuantity(const QString& baseName);
108
111 virtual void setMRMLScene(vtkMRMLScene* scene);
112
113 void setUnitAwareProperties(UnitAwareProperties flags);
114
115signals:
116 void mrmlSceneChanged(vtkMRMLScene*);
117 void quantityChanged(const QString&);
118
119protected slots:
120 void updateWidgetFromUnitNode();
121
122protected:
123 QScopedPointer<qMRMLCoordinatesWidgetPrivate> d_ptr;
124
125private:
126 Q_DECLARE_PRIVATE(qMRMLCoordinatesWidget);
127 Q_DISABLE_COPY(qMRMLCoordinatesWidget);
128};
129
130Q_DECLARE_OPERATORS_FOR_FLAGS(qMRMLCoordinatesWidget::UnitAwareProperties)
131
132#endif
Extend the ctkCoordinatesWidget to integrate units support.
ctkCoordinatesWidget Superclass
Abstract Superclass for all specific types of MRML nodes.
A set of MRML Nodes that supports serialization and undo/redo.