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