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;
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 
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.
virtual void setMinimumToMaximumSpinBox(double minimum)
ctkRangeWidget(QWidget *parent=0)
virtual bool eventFilter(QObject *obj, QEvent *event)
virtual double customSpinBoxesLimitsMax() const
virtual ctkDoubleSpinBox * maximumSpinBox() const
virtual void setSuffix(const QString &suffix)
void rangeChanged(double min, double max)
virtual void changeMaximumValue(double value)
virtual void setSpinBoxAlignment(Qt::Alignment alignment)
virtual void setMaximum(double maximum)
virtual void setSlider(ctkDoubleRangeSlider *slider)
can be used to change the slider by a custom one
virtual void setPrefix(const QString &prefix)
virtual Qt::Alignment spinBoxAlignment() const
virtual Qt::Alignment spinBoxTextAlignment() const
void minimumValueIsChanging(double value)
virtual void setSymmetricMoves(bool symmetry)
QWidget Superclass
Superclass typedef.
virtual void onSliderRangeChanged(double min, double max)
void maximumValueChanged(double value)
virtual void setMaximumValue(double value)
virtual void setMinimumValue(double value)
virtual void setValues(double minValue, double maxValue)
Utility function that set the min and max values at once.
virtual double maximumValue() const
void minimumValueChanged(double value)
virtual double tickInterval() const
virtual void setAutoSpinBoxWidth(bool autoWidth)
virtual void setTickInterval(double ti)
virtual bool symmetricMoves() const
virtual void stopChanging()
virtual bool isAutoSpinBoxWidth() const
virtual void setMinimum(double minimum)
virtual void setValueProxy(ctkValueProxy *proxy)
virtual void changeValues(double newMinValue, double newMaxValue)
virtual void setDecimals(int decimals)
virtual QString prefix() const
virtual void changeMinimumValue(double value)
virtual double minimum() const
virtual void setCustomSpinBoxesLimits(double min, double max)
This property sets custom limits for spin boxes.
virtual ~ctkRangeWidget()
Destructor.
virtual Q_INVOKABLE void setRange(double min, double max)
virtual int decimals() const
This property holds the precision of the spin box, in decimals.
virtual void setSliderValues()
A spinbox value has been modified, update the slider.
void valuesChanged(double minValue, double maxValue)
virtual void setSingleStep(double step)
QScopedPointer< ctkRangeWidgetPrivate > d_ptr
virtual double singleStep() const
virtual ctkValueProxy * valueProxy() const
virtual ctkDoubleRangeSlider * slider() const
virtual double minimumValue() const
virtual void values(double &minValue, double &maxValue) const
virtual bool hasTracking() const
virtual double maximum() const
virtual void setTracking(bool enable)
virtual double customSpinBoxesLimitsMin() const
virtual void reset()
Reset the slider and spinbox to zero (value and position)
virtual QString suffix() const
virtual void setSpinBoxTextAlignment(Qt::Alignment alignment)
virtual void setMaximumToMinimumSpinBox(double maximum)
virtual void range(double minimumAndMaximum[2]) const
virtual void startChanging()
virtual void onValueProxyModified()
virtual ctkDoubleSpinBox * minimumSpinBox() const
virtual void onValueProxyAboutToBeModified()
void maximumValueIsChanging(double value)
Base class for value proxies. Value proxy allows to decouple the displayed value from the values acce...
Definition: ctkValueProxy.h:47