CTK  0.1.0
The Common Toolkit is a community effort to provide support code for medical image analysis, surgical navigation, and related projects.
ctkSliderWidget.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 __ctkSliderWidget_h
22 #define __ctkSliderWidget_h
23 
24 // Qt includes
25 #include <QSlider>
26 
27 // CTK includes
28 #include <ctkPimpl.h>
29 
30 #include "ctkWidgetsExport.h"
31 
32 class ctkDoubleSlider;
33 class ctkPopupWidget;
34 class ctkSliderWidgetPrivate;
35 class ctkDoubleSpinBox;
36 class ctkValueProxy;
37 
43 class CTK_WIDGETS_EXPORT ctkSliderWidget : public QWidget
44 {
45  Q_OBJECT
46  Q_FLAGS(SynchronizeSiblings)
47 
48 
51  Q_PROPERTY(int decimals READ decimals WRITE setDecimals NOTIFY decimalsChanged)
52  Q_PROPERTY(double singleStep READ singleStep WRITE setSingleStep)
53  Q_PROPERTY(double pageStep READ pageStep WRITE setPageStep)
54  Q_PROPERTY(double minimum READ minimum WRITE setMinimum)
55  Q_PROPERTY(double maximum READ maximum WRITE setMaximum)
56  Q_PROPERTY(double value READ value WRITE setValue)
57  Q_PROPERTY(QString prefix READ prefix WRITE setPrefix)
58  Q_PROPERTY(QString suffix READ suffix WRITE setSuffix)
59  Q_PROPERTY(double tickInterval READ tickInterval WRITE setTickInterval)
60  Q_PROPERTY(QSlider::TickPosition tickPosition READ tickPosition WRITE setTickPosition)
61  Q_PROPERTY(SynchronizeSiblings synchronizeSiblings READ synchronizeSiblings WRITE setSynchronizeSiblings)
62  Q_PROPERTY(Qt::Alignment spinBoxAlignment READ spinBoxAlignment WRITE setSpinBoxAlignment)
63  Q_PROPERTY(bool tracking READ hasTracking WRITE setTracking)
64  Q_PROPERTY(bool spinBoxVisible READ isSpinBoxVisible WRITE setSpinBoxVisible);
65  Q_PROPERTY(bool popupSlider READ hasPopupSlider WRITE setPopupSlider);
66  Q_PROPERTY(bool invertedAppearance READ invertedAppearance WRITE setInvertedAppearance)
67  Q_PROPERTY(bool invertedControls READ invertedControls WRITE setInvertedControls)
68 
69 public:
70 
85  {
86  NoSynchronize = 0x000,
87  SynchronizeWidth = 0x001,
88  SynchronizeDecimals = 0x002,
89  };
90  Q_DECLARE_FLAGS(SynchronizeSiblings, SynchronizeSibling)
91 
92 
93  typedef QWidget Superclass;
94 
96  explicit ctkSliderWidget(QWidget* parent = 0);
97  virtual ~ctkSliderWidget();
98 
105  virtual double minimum()const;
106  virtual void setMinimum(double minimum);
107 
114  virtual double maximum()const;
115  virtual void setMaximum(double maximum);
118  virtual void setRange(double min, double max);
119 
123  //double sliderPosition()const;
124  //void setSliderPosition(double position);
125 
130  virtual double value()const;
131 
137  virtual double singleStep()const;
138  virtual void setSingleStep(double step);
139 
144  virtual double pageStep()const;
145  virtual void setPageStep(double step);
146 
150  virtual int decimals()const;
151 
156  virtual QString prefix()const;
157  virtual void setPrefix(const QString& prefix);
158 
163  virtual QString suffix()const;
164  virtual void setSuffix(const QString& suffix);
165 
171  virtual double tickInterval()const;
172  virtual void setTickInterval(double tick);
173 
178  virtual void setTickPosition(QSlider::TickPosition position);
179  virtual QSlider::TickPosition tickPosition()const;
180 
185  virtual void setSpinBoxAlignment(Qt::Alignment alignment);
186  virtual Qt::Alignment spinBoxAlignment()const;
187 
194  virtual void setTracking(bool enable);
195  virtual bool hasTracking()const;
196 
202  virtual ctkSliderWidget::SynchronizeSiblings synchronizeSiblings() const;
203  virtual void setSynchronizeSiblings(ctkSliderWidget::SynchronizeSiblings options);
204 
214  virtual void setInvertedAppearance(bool invertedAppearance);
215  virtual bool invertedAppearance()const;
216 
224  virtual void setInvertedControls(bool invertedControls);
225  virtual bool invertedControls()const;
226 
230  virtual bool isSpinBoxVisible()const;
231 
239  virtual bool hasPopupSlider()const;
240  virtual void setPopupSlider(bool popup);
241 
246  virtual ctkPopupWidget* popup()const;
247 
252  virtual ctkDoubleSpinBox* spinBox();
253 
258  virtual ctkDoubleSlider* slider();
259 
265  virtual void setValueProxy(ctkValueProxy* proxy);
266  virtual ctkValueProxy* valueProxy() const;
267 
268 public Q_SLOTS:
271  virtual void reset();
272  virtual void setValue(double value);
273  virtual void setSpinBoxVisible(bool);
274 
277  virtual void setDecimals(int decimals);
278 
279 Q_SIGNALS:
285  void valueChanged(double value);
286 
291  void valueIsChanging(double value);
292 
295  void decimalsChanged(int decimals);
296 
297 protected Q_SLOTS:
298 
299  virtual void startChanging();
300  virtual void stopChanging();
301  virtual void setSpinBoxValue(double sliderValue);
302  virtual void setSliderValue(double spinBoxValue);
303  virtual void onValueProxyAboutToBeModified();
304  virtual void onValueProxyModified();
305 
306 protected:
307  virtual bool eventFilter(QObject *obj, QEvent *event);
308 
309 protected:
310  QScopedPointer<ctkSliderWidgetPrivate> d_ptr;
311 
312 private:
313  Q_DECLARE_PRIVATE(ctkSliderWidget);
314  Q_DISABLE_COPY(ctkSliderWidget);
315 
316 };
317 
319 
320 #endif
Custom SpinBox The ctkDoubleSpinBox internaly uses a QDoubleSpinBox while it retain controls over it.
QWidget Superclass
Superclass typedef.
Base class for value proxies. Value proxy allows to decouple the displayed value from the values acce...
Definition: ctkValueProxy.h:47
Q_DECLARE_OPERATORS_FOR_FLAGS(ctkSliderWidget::SynchronizeSiblings)