CTK  0.1.0
The Common Toolkit is a community effort to provide support code for medical image analysis, surgical navigation, and related projects.
ctkRangeWidget.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Library: CTK
4 
5  Copyright (c) Kitware Inc.
6 
7  Licensed under the Apache License, Version 2.0 (the "License");
8  you may not use this file except in compliance with the License.
9  You may obtain a copy of the License at
10 
11  http://www.apache.org/licenses/LICENSE-2.0.txt
12 
13  Unless required by applicable law or agreed to in writing, software
14  distributed under the License is distributed on an "AS IS" BASIS,
15  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  See the License for the specific language governing permissions and
17  limitations under the License.
18 
19 =========================================================================*/
20 
21 #ifndef __ctkRangeWidget_h
22 #define __ctkRangeWidget_h
23 
24 // Qt includes
25 #include <QSlider>
26 
27 // CTK includes
28 #include <ctkPimpl.h>
29 
30 #include "ctkWidgetsExport.h"
31 
33 class ctkDoubleSpinBox;
34 class ctkRangeWidgetPrivate;
35 class ctkValueProxy;
36 
42 class CTK_WIDGETS_EXPORT ctkRangeWidget : public QWidget
43 {
44  Q_OBJECT
45  Q_PROPERTY(int decimals READ decimals WRITE setDecimals)
46  Q_PROPERTY(double singleStep READ singleStep WRITE setSingleStep)
47  Q_PROPERTY(double minimum READ minimum WRITE setMinimum)
48  Q_PROPERTY(double maximum READ maximum WRITE setMaximum)
49  Q_PROPERTY(double minimumValue READ minimumValue WRITE setMinimumValue)
50  Q_PROPERTY(double maximumValue READ maximumValue WRITE setMaximumValue)
51  Q_PROPERTY(QString prefix READ prefix WRITE setPrefix)
52  Q_PROPERTY(QString suffix READ suffix WRITE setSuffix)
53  Q_PROPERTY(double tickInterval READ tickInterval WRITE setTickInterval)
54  Q_PROPERTY(bool autoSpinBoxWidth READ isAutoSpinBoxWidth WRITE setAutoSpinBoxWidth)
55  Q_PROPERTY(Qt::Alignment spinBoxTextAlignment READ spinBoxTextAlignment WRITE setSpinBoxTextAlignment)
56  Q_PROPERTY(Qt::Alignment spinBoxAlignment READ spinBoxAlignment WRITE setSpinBoxAlignment)
57  Q_PROPERTY(bool tracking READ hasTracking WRITE setTracking)
58  Q_PROPERTY(bool symmetricMoves READ symmetricMoves WRITE setSymmetricMoves)
59 
60 public:
62  typedef QWidget Superclass;
63 
67  explicit ctkRangeWidget(QWidget* parent = 0);
68 
70  virtual ~ctkRangeWidget();
71 
78  virtual double minimum()const;
79  virtual void setMinimum(double minimum);
80 
87  virtual double maximum()const;
88  virtual void setMaximum(double maximum);
91  virtual void setRange(double min, double max);
92  virtual void range(double minimumAndMaximum[2])const;
93 
98  virtual double minimumValue()const;
99 
104  virtual double maximumValue()const;
105 
109  virtual void values(double &minValue, double &maxValue)const;
110 
116  virtual double singleStep()const;
117  virtual void setSingleStep(double step);
118 
121  virtual int decimals()const;
122 
127  virtual QString prefix()const;
128  virtual void setPrefix(const QString& prefix);
129 
134  virtual QString suffix()const;
135  virtual void setSuffix(const QString& suffix);
136 
142  virtual double tickInterval()const;
143  virtual void setTickInterval(double ti);
144 
149  virtual void setSpinBoxAlignment(Qt::Alignment alignment);
150  virtual Qt::Alignment spinBoxAlignment()const;
151 
156  virtual void setSpinBoxTextAlignment(Qt::Alignment alignment);
157  virtual Qt::Alignment spinBoxTextAlignment()const;
158 
165  virtual void setTracking(bool enable);
166  virtual bool hasTracking()const;
167 
172  // ctkRangeWidget siblings.
173  virtual bool isAutoSpinBoxWidth()const;
174  virtual void setAutoSpinBoxWidth(bool autoWidth);
175 
179  virtual bool symmetricMoves()const;
180  virtual void setSymmetricMoves(bool symmetry);
181 
184  virtual ctkDoubleRangeSlider* slider()const;
187  virtual ctkDoubleSpinBox* minimumSpinBox()const;
190  virtual ctkDoubleSpinBox* maximumSpinBox()const;
191 
194  virtual void setValueProxy(ctkValueProxy* proxy);
195  virtual ctkValueProxy* valueProxy() const;
196 
197 public Q_SLOTS:
200  virtual void reset();
201  virtual void setMinimumValue(double value);
202  virtual void setMaximumValue(double value);
205  virtual void setValues(double minValue, double maxValue);
206 
209  virtual void setDecimals(int decimals);
210 
211 Q_SIGNALS:
214  //void sliderMoved(double position);
215  void minimumValueChanged(double value);
216  void minimumValueIsChanging(double value);
217  void maximumValueChanged(double value);
218  void maximumValueIsChanging(double value);
219  void valuesChanged(double minValue, double maxValue);
220  void rangeChanged(double min, double max);
221 
222 protected Q_SLOTS:
223  virtual void startChanging();
224  virtual void stopChanging();
225  virtual void changeValues(double newMinValue, double newMaxValue);
226  virtual void changeMinimumValue(double value);
227  virtual void changeMaximumValue(double value);
229  virtual void setSliderValues();
230  virtual void setMinimumToMaximumSpinBox(double minimum);
231  virtual void setMaximumToMinimumSpinBox(double maximum);
232  virtual void onSliderRangeChanged(double min, double max);
233 
234  virtual void onValueProxyAboutToBeModified();
235  virtual void onValueProxyModified();
236 
237 protected:
238  virtual bool eventFilter(QObject *obj, QEvent *event);
239 
241  virtual void setSlider(ctkDoubleRangeSlider* slider);
242 
243 protected:
244  QScopedPointer<ctkRangeWidgetPrivate> d_ptr;
245 
246 private:
247  Q_DECLARE_PRIVATE(ctkRangeWidget);
248  Q_DISABLE_COPY(ctkRangeWidget);
249 };
250 
251 #endif
Custom SpinBox The ctkDoubleSpinBox internaly uses a QDoubleSpinBox while it retain controls over it...
Base class for value proxies. Value proxy allows to decouple the displayed value from the values acce...
Definition: ctkValueProxy.h:46
QWidget Superclass
Superclass typedef.