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  Q_PROPERTY(double customSpinBoxesLimitsMin READ customSpinBoxesLimitsMin)
60  Q_PROPERTY(double customSpinBoxesLimitsMax READ customSpinBoxesLimitsMax)
61 
62 public:
64  typedef QWidget Superclass;
65 
69  explicit ctkRangeWidget(QWidget* parent = 0);
70 
72  virtual ~ctkRangeWidget();
73 
80  virtual double minimum()const;
81  virtual void setMinimum(double minimum);
82 
89  virtual double maximum()const;
90  virtual void setMaximum(double maximum);
93  Q_INVOKABLE virtual void setRange(double min, double max);
94  virtual void range(double minimumAndMaximum[2])const;
95 
100  virtual double minimumValue()const;
101 
106  virtual double maximumValue()const;
107 
111  virtual void values(double &minValue, double &maxValue)const;
112 
118  virtual double singleStep()const;
119  virtual void setSingleStep(double step);
120 
123  virtual int decimals()const;
124 
129  virtual QString prefix()const;
130  virtual void setPrefix(const QString& prefix);
131 
136  virtual QString suffix()const;
137  virtual void setSuffix(const QString& suffix);
138 
144  virtual double tickInterval()const;
145  virtual void setTickInterval(double ti);
146 
151  virtual void setSpinBoxAlignment(Qt::Alignment alignment);
152  virtual Qt::Alignment spinBoxAlignment()const;
153 
158  virtual void setSpinBoxTextAlignment(Qt::Alignment alignment);
159  virtual Qt::Alignment spinBoxTextAlignment()const;
160 
167  virtual void setTracking(bool enable);
168  virtual bool hasTracking()const;
169 
174  // ctkRangeWidget siblings.
175  virtual bool isAutoSpinBoxWidth()const;
176  virtual void setAutoSpinBoxWidth(bool autoWidth);
177 
181  virtual bool symmetricMoves()const;
182  virtual void setSymmetricMoves(bool symmetry);
183 
186  virtual void setCustomSpinBoxesLimits(double min, double max);
187  virtual double customSpinBoxesLimitsMin()const;
188  virtual double customSpinBoxesLimitsMax()const;
189 
192  virtual ctkDoubleRangeSlider* slider()const;
195  virtual ctkDoubleSpinBox* minimumSpinBox()const;
198  virtual ctkDoubleSpinBox* maximumSpinBox()const;
199 
202  virtual void setValueProxy(ctkValueProxy* proxy);
203  virtual ctkValueProxy* valueProxy() const;
204 
205 public Q_SLOTS:
208  virtual void reset();
209  virtual void setMinimumValue(double value);
210  virtual void setMaximumValue(double value);
213  virtual void setValues(double minValue, double maxValue);
214 
217  virtual void setDecimals(int decimals);
218 
219 Q_SIGNALS:
222  //void sliderMoved(double position);
223  void minimumValueChanged(double value);
224  void minimumValueIsChanging(double value);
225  void maximumValueChanged(double value);
226  void maximumValueIsChanging(double value);
227  void valuesChanged(double minValue, double maxValue);
228  void rangeChanged(double min, double max);
229 
230 protected Q_SLOTS:
231  virtual void startChanging();
232  virtual void stopChanging();
233  virtual void changeValues(double newMinValue, double newMaxValue);
234  virtual void changeMinimumValue(double value);
235  virtual void changeMaximumValue(double value);
237  virtual void setSliderValues();
238  virtual void setMinimumToMaximumSpinBox(double minimum);
239  virtual void setMaximumToMinimumSpinBox(double maximum);
240  virtual void onSliderRangeChanged(double min, double max);
241 
242  virtual void onValueProxyAboutToBeModified();
243  virtual void onValueProxyModified();
244 
245 protected:
246  virtual bool eventFilter(QObject *obj, QEvent *event);
247 
249  virtual void setSlider(ctkDoubleRangeSlider* slider);
250 
251 protected:
252  QScopedPointer<ctkRangeWidgetPrivate> d_ptr;
253 
254 private:
255  Q_DECLARE_PRIVATE(ctkRangeWidget);
256  Q_DISABLE_COPY(ctkRangeWidget);
257 };
258 
259 #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.