| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 | /*=========================================================================  Library:   CTK  Copyright (c) Kitware Inc.   All rights reserved.  Distributed under a BSD License. See LICENSE.txt file.  This software is distributed "AS IS" WITHOUT ANY WARRANTY; without even  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the above copyright notice for more information.=========================================================================*/#ifndef __ctkRangeWidget_h#define __ctkRangeWidget_h// Qt includes#include <QSlider>// CTK includes#include <ctkPimpl.h>#include "CTKWidgetsExport.h"class ctkRangeWidgetPrivate;class CTK_WIDGETS_EXPORT ctkRangeWidget : public QWidget{  Q_OBJECT  Q_PROPERTY(double minimum READ minimum WRITE setMinimum)  Q_PROPERTY(double maximum READ maximum WRITE setMaximum)  Q_PROPERTY(double singleStep READ singleStep WRITE setSingleStep)  Q_PROPERTY(int decimals READ decimals WRITE setDecimals)  Q_PROPERTY(double minimumValue READ minimumValue WRITE setMinimumValue)  Q_PROPERTY(double maximumValue READ maximumValue WRITE setMaximumValue)  Q_PROPERTY(QString prefix READ prefix WRITE setPrefix)  Q_PROPERTY(QString suffix READ suffix WRITE setSuffix)  Q_PROPERTY(double tickInterval READ tickInterval WRITE setTickInterval)  Q_PROPERTY(bool autoSpinBoxWidth READ isAutoSpinBoxWidth WRITE setAutoSpinBoxWidth)  Q_PROPERTY(Qt::Alignment spinBoxAlignment READ spinBoxAlignment WRITE setSpinBoxAlignment)  Q_PROPERTY(bool tracking READ hasTracking WRITE setTracking)public:  /// Superclass typedef  typedef QWidget Superclass;  /// Constructors  explicit ctkRangeWidget(QWidget* parent = 0);  ///   /// This property holds the sliders and spinbox minimum value.  /// FIXME: Test following specs.  /// When setting this property, the maximum is adjusted if necessary   /// to ensure that the range remains valid.   /// Also the slider's current value is adjusted to be within the new range.  double minimum()const;  void setMinimum(double minimum);    ///   /// This property holds the sliders and spinbox minimum value.  /// FIXME: Test following specs.  /// When setting this property, the maximum is adjusted if necessary   /// to ensure that the range remains valid.   /// Also the slider's current value is adjusted to be within the new range.  double maximum()const;  void setMaximum(double maximum);  /// Description  /// Utility function that set the min/max in once  void setRange(double min, double max);  ///   /// This property holds the slider and spinbox minimum value.  /// ctkRangeWidget forces the value to be within the  /// legal range: minimum <= minimumValue <= maximumValue <= maximum.  double minimumValue()const;  ///   /// This property holds the slider and spinbox maximum value.  /// ctkRangeWidget forces the value to be within the  /// legal range: minimum <= minimumValue <= maximumValue <= maximum.  double maximumValue()const;  ///   /// This property holds the single step.  /// The smaller of two natural steps that the   /// slider provides and typically corresponds to the   /// user pressing an arrow key.  double singleStep()const;  void setSingleStep(double step);  ///   /// This property holds the precision of the spin box, in decimals.  /// Sets how many decimals the spinbox will use for displaying and interpreting doubles.  int decimals()const;  void setDecimals(int decimals);  ///  /// This property holds the spin box's prefix.  /// The prefix is prepended to the start of the displayed value.   /// Typical use is to display a unit of measurement or a currency symbol  QString prefix()const;  void setPrefix(const QString& prefix);  ///  /// This property holds the spin box's suffix.  /// The suffix is appended to the end of the displayed value.   /// Typical use is to display a unit of measurement or a currency symbol  QString suffix()const;  void setSuffix(const QString& suffix);  ///   /// This property holds the interval between tickmarks.  /// This is a value interval, not a pixel interval.   /// If it is 0, the slider will choose between lineStep() and pageStep().  /// The default value is 0.  double tickInterval()const;  void setTickInterval(double ti);  ///   /// This property holds the alignment of the spin box.  /// Possible Values are Qt::AlignLeft, Qt::AlignRight, and Qt::AlignHCenter.  /// By default, the alignment is Qt::AlignLeft  void setSpinBoxAlignment(Qt::Alignment alignment);  Qt::Alignment spinBoxAlignment()const;  ///   /// This property holds whether slider tracking is enabled.  /// If tracking is enabled (the default), the widget emits the valueChanged()   /// signal while the slider or spinbox is being dragged. If tracking is   /// disabled, the widget emits the valueChanged() signal only when the user   /// releases the slider or spinbox.  void setTracking(bool enable);  bool hasTracking()const;  ///   /// Set/Get the auto spinbox width  /// When the autoSpinBoxWidth property is on, the width of the SpinBox is  /// set to the same width of the largest QSpinBox of its  // ctkRangeWidget siblings.  bool isAutoSpinBoxWidth()const;  void setAutoSpinBoxWidth(bool autoWidth);public slots:  ///   /// Reset the slider and spinbox to zero (value and position)  void reset();  void setMinimumValue(double value);  void setMaximumValue(double value);signals:  /// Use with care:  /// sliderMoved is emitted only when the user moves the slider  //void sliderMoved(double position);  void minimumValueChanged(double value);  void minimumValueIsChanging(double value);  void maximumValueChanged(double value);  void maximumValueIsChanging(double value);protected slots:  void startChanging();  void stopChanging();  void changeMinimumValue(double value);  void changeMaximumValue(double value);  void setMinimumToMaximumSpinBox(double minimum);  void setMaximumToMinimumSpinBox(double maximum);  protected:  virtual bool eventFilter(QObject *obj, QEvent *event);private:  CTK_DECLARE_PRIVATE(ctkRangeWidget);};#endif
 |