| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213 | /*=========================================================================  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 __ctkDoubleRangeSlider_h#define __ctkDoubleRangeSlider_h// Qt includes#include <QWidget>#include <QAbstractSlider>// CTK includes#include <ctkPimpl.h>#include "CTKWidgetsExport.h"class ctkDoubleRangeSliderPrivate;class CTK_WIDGETS_EXPORT ctkDoubleRangeSlider : 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(double minimumValue READ minimumValue WRITE setMinimumValue)  Q_PROPERTY(double maximumValue READ maximumValue WRITE setMaximumValue)  Q_PROPERTY(double minimumPosition READ minimumPosition WRITE setMinimumPosition)  Q_PROPERTY(double maximumPosition READ maximumPosition WRITE setMaximumPosition)  Q_PROPERTY(bool tracking READ hasTracking WRITE setTracking)  Q_PROPERTY(Qt::Orientation orientation READ orientation WRITE setOrientation)  Q_PROPERTY(double tickInterval READ tickInterval WRITE setTickInterval)public:  // Superclass typedef  typedef QWidget Superclass;    // Constructors  ctkDoubleRangeSlider( Qt::Orientation o, QWidget* par= 0 );  ctkDoubleRangeSlider( QWidget* par = 0 );    ///   /// This property holds the single step.  /// The smaller of two natural steps that an abstract sliders provides and  /// typically corresponds to the user pressing an arrow key  void setSingleStep(double ss);  double singleStep()const;    ///   /// 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.  void setTickInterval(double ti);  double tickInterval()const;    ///   /// This property holds the sliders's minimum value.  /// When setting this property, the maximum is adjusted if necessary to  /// ensure that the range remains valid. Also the slider's current values  /// are adjusted to be within the new range.   double minimum()const;  void setMinimum(double min);  ///   /// This property holds the slider's maximum value.  /// When setting this property, the minimum is adjusted if necessary to   /// ensure that the range remains valid. Also the slider's current values  /// are adjusted to be within the new range.  double maximum()const;  void setMaximum(double max);  ///   /// Sets the slider's minimum to min and its maximum to max.  /// If max is smaller than min, min becomes the only legal value.  void setRange(double min, double max);  ///   /// This property holds the slider's current minimum value.  /// The slider forces the minimum value to be within the legal range:   /// minimum <= minvalue <= maxvalue <= maximum.  /// Changing the minimumValue also changes the minimumPosition.  double minimumValue() const;  ///   /// This property holds the slider's current maximum value.  /// The slider forces the maximum value to be within the legal range:   /// minimum <= minvalue <= maxvalue <= maximum.  /// Changing the maximumValue also changes the maximumPosition.  double maximumValue() const;    ///   /// This property holds the current slider minimum position.  /// If tracking is enabled (the default), this is identical to minimumValue.  double minimumPosition() const;  void setMinimumPosition(double minPos);  ///   /// This property holds the current slider maximum position.  /// If tracking is enabled (the default), this is identical to maximumValue.  double maximumPosition() const;  void setMaximumPosition(double maxPos);  ///  /// Utility function that set the minimum position and  /// maximum position at once.  void setPositions(double minPos, double maxPos);  ///   /// This property holds whether slider tracking is enabled.  /// If tracking is enabled (the default), the slider emits the minimumValueChanged()  /// signal while the left/bottom handler is being dragged and the slider emits  /// the maximumValueChanged() signal while the right/top handler is being dragged.   /// If tracking is disabled, the slider emits the minimumValueChanged()   /// and maximumValueChanged() signals only when the user releases the slider.  void setTracking(bool enable);  bool hasTracking()const;    ///  /// Triggers a slider action on the current slider. Possible actions are   /// SliderSingleStepAdd, SliderSingleStepSub, SliderPageStepAdd,   /// SliderPageStepSub, SliderToMinimum, SliderToMaximum, and SliderMove.  void triggerAction(QAbstractSlider::SliderAction action);  ///  /// This property holds the orientation of the slider.  /// The orientation must be Qt::Vertical (the default) or Qt::Horizontal.  Qt::Orientation orientation()const;  void setOrientation(Qt::Orientation orientation);signals:  ///  /// This signal is emitted when the slider minimum value has changed,   /// with the new slider value as argument.  void minimumValueChanged(double minVal);  ///  /// This signal is emitted when the slider maximum value has changed,   /// with the new slider value as argument.  void maximumValueChanged(double maxVal);  ///  /// Utility signal that is fired when minimum or maximum values have changed.  void valuesChanged(double minVal, double maxVal);  ///  /// This signal is emitted when sliderDown is true and the slider moves.   /// This usually happens when the user is dragging the minimum slider.   /// The value is the new slider minimum position.  /// This signal is emitted even when tracking is turned off.  void minimumPositionChanged(double minPos);  ///  /// This signal is emitted when sliderDown is true and the slider moves.   /// This usually happens when the user is dragging the maximum slider.   /// The value is the new slider maximum position.  /// This signal is emitted even when tracking is turned off.  void maximumPositionChanged(double maxPos);    ///  /// Utility signal that is fired when minimum or maximum positions   /// have changed.  void positionsChanged(double minPos, double maxPos);  ///   /// This signal is emitted when the user presses one slider with the mouse,   /// or programmatically when setSliderDown(true) is called.  void sliderPressed();  ///   /// This signal is emitted when the user releases one slider with the mouse,  /// or programmatically when setSliderDown(false) is called.   void sliderReleased();    public slots:  ///   /// This property holds the slider's current minimum value.  /// The slider forces the minimum value to be within the legal range:   /// minimum <= minvalue <= maxvalue <= maximum.  /// Changing the minimumValue also changes the minimumPosition.  void setMinimumValue(double minVal);  ///   /// This property holds the slider's current maximum value.  /// The slider forces the maximum value to be within the legal range:   /// minimum <= minvalue <= maxvalue <= maximum.  /// Changing the maximumValue also changes the maximumPosition.  void setMaximumValue(double maxVal);    ///  /// Utility function that set the minimum value and maximum value at once.  void setValues(double minVal, double maxVal);protected slots:  void onMinValueChanged(int value);  void onMaxValueChanged(int value);  void onValuesChanged(int min, int max);  void onMinPosChanged(int value);  void onMaxPosChanged(int value);  void onPositionsChanged(int min, int max);private:  CTK_DECLARE_PRIVATE(ctkDoubleRangeSlider);};#endif
 |