# qwt_slider.h

    00001 /* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
    00002  * Qwt Widget Library
    00003  * Copyright (C) 1997   Josef Wilgen
    00004  * Copyright (C) 2002   Uwe Rathmann
    00005  *
    00006  * This library is free software; you can redistribute it and/or
    00007  * modify it under the terms of the Qwt License, Version 1.0
    00008  *****************************************************************************/
    00009
    00010 #ifndef QWT_SLIDER_H
    00011 #define QWT_SLIDER_H
    00012
    00013 #include "qwt_global.h"
    00014 #include "qwt_abstract_scale.h"
    00015 #include "qwt_abstract_slider.h"
    00016
    00017 class QwtScaleDraw;
    00018
    00032 class QWT_EXPORT QwtSlider : public QwtAbstractSlider, public QwtAbstractScale
    00033 {
    00034     Q_OBJECT
    00035     Q_ENUMS( ScalePos )
    00036     Q_ENUMS( BackgroundStyle )
    00037     Q_PROPERTY( ScalePos scalePosition READ scalePosition
    00038         WRITE setScalePosition )
    00039     Q_PROPERTY( BackgroundStyles backgroundStyle
    00040         READ backgroundStyle WRITE setBackgroundStyle )
    00041     Q_PROPERTY( QSize handleSize READ handleSize WRITE setHandleSize )
    00042     Q_PROPERTY( int borderWidth READ borderWidth WRITE setBorderWidth )
    00043     Q_PROPERTY( int spacing READ spacing WRITE setSpacing )
    00044
    00045 public:
    00046
    00056     enum ScalePos
    00057     {
    00059         NoScale,
    00060
    00062         LeftScale,
    00063
    00065         RightScale,
    00066
    00068         TopScale,
    00069
    00071         BottomScale
    00072     };
    00073
    00078     enum BackgroundStyle
    00079     {
    00081         Trough = 0x01,
    00082
    00084         Groove = 0x02,
    00085     };
    00086
    00088     typedef QFlags<BackgroundStyle> BackgroundStyles;
    00089
    00090     explicit QwtSlider( QWidget *parent,
    00091         Qt::Orientation = Qt::Horizontal,
    00092         ScalePos = NoScale, BackgroundStyles = Trough );
    00093
    00094     virtual ~QwtSlider();
    00095
    00096     virtual void setOrientation( Qt::Orientation );
    00097
    00098     void setBackgroundStyle( BackgroundStyles );
    00099     BackgroundStyles backgroundStyle() const;
    00100
    00101     void setScalePosition( ScalePos s );
    00102     ScalePos scalePosition() const;
    00103
    00104     void setHandleSize( int width, int height );
    00105     void setHandleSize( const QSize & );
    00106     QSize handleSize() const;
    00107
    00108     void setBorderWidth( int bw );
    00109     int borderWidth() const;
    00110
    00111     void setSpacing( int );
    00112     int spacing() const;
    00113
    00114     virtual QSize sizeHint() const;
    00115     virtual QSize minimumSizeHint() const;
    00116
    00117     void setScaleDraw( QwtScaleDraw * );
    00118     const QwtScaleDraw *scaleDraw() const;
    00119
    00120 protected:
    00121     virtual double getValue( const QPoint &p );
    00122     virtual void getScrollMode( const QPoint &p,
    00123         QwtAbstractSlider::ScrollMode &, int &direction ) const;
    00124
    00125     virtual void drawSlider ( QPainter *, const QRect & ) const;
    00126     virtual void drawHandle( QPainter *, const QRect &, int pos ) const;
    00127
    00128     virtual void resizeEvent( QResizeEvent * );
    00129     virtual void paintEvent ( QPaintEvent * );
    00130     virtual void changeEvent( QEvent * );
    00131
    00132     virtual void valueChange();
    00133     virtual void rangeChange();
    00134     virtual void scaleChange();
    00135
    00136     int transform( double v ) const;
    00137
    00138     QwtScaleDraw *scaleDraw();
    00139
    00140 private:
    00141     void layoutSlider( bool );
    00142     void initSlider( Qt::Orientation, ScalePos, BackgroundStyles );
    00143
    00144     class PrivateData;
    00145     PrivateData *d_data;
    00146 };
    00147
    00148 Q_DECLARE_OPERATORS_FOR_FLAGS( QwtSlider::BackgroundStyles )
    00149
    00150 #endif