Skip to content
Snippets Groups Projects
qwt_slider.h 3.61 KiB
Newer Older
  • Learn to ignore specific revisions
  • pixhawk's avatar
    pixhawk committed
    /* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
     * Qwt Widget Library
     * Copyright (C) 1997   Josef Wilgen
     * Copyright (C) 2002   Uwe Rathmann
     *
     * This library is free software; you can redistribute it and/or
     * modify it under the terms of the Qwt License, Version 1.0
     *****************************************************************************/
    
    // vim: expandtab
    
    #ifndef QWT_SLIDER_H
    #define QWT_SLIDER_H
    
    #include "qwt_global.h"
    #include "qwt_abstract_scale.h"
    #include "qwt_abstract_slider.h"
    
    class QwtScaleDraw;
    
    /*!
      \brief The Slider Widget
    
      QwtSlider is a slider widget which operates on an interval
      of type double. QwtSlider supports different layouts as
      well as a scale.
    
      \image html sliders.png
    
      \sa QwtAbstractSlider and QwtAbstractScale for the descriptions
          of the inherited members.
    */
    
    class QWT_EXPORT QwtSlider : public QwtAbstractSlider, public QwtAbstractScale
    {
        Q_OBJECT
        Q_ENUMS( ScalePos )
        Q_ENUMS( BGSTYLE )
        Q_PROPERTY( ScalePos scalePosition READ scalePosition
    
                    WRITE setScalePosition )
    
    pixhawk's avatar
    pixhawk committed
        Q_PROPERTY( BGSTYLE bgStyle READ bgStyle WRITE setBgStyle )
        Q_PROPERTY( int thumbLength READ thumbLength WRITE setThumbLength )
        Q_PROPERTY( int thumbWidth READ thumbWidth WRITE setThumbWidth )
        Q_PROPERTY( int borderWidth READ borderWidth WRITE setBorderWidth )
    
    pixhawk's avatar
    pixhawk committed
    public:
    
    
    pixhawk's avatar
    pixhawk committed
          Scale position. QwtSlider tries to enforce valid combinations of its
          orientation and scale position:
          - Qt::Horizonal combines with NoScale, TopScale and BottomScale
          - Qt::Vertical combines with NoScale, LeftScale and RightScale
    
          \sa QwtSlider::QwtSlider
         */
    
        enum ScalePos {
            NoScale,
    
            LeftScale,
            RightScale,
            TopScale,
            BottomScale
    
    pixhawk's avatar
    pixhawk committed
        };
    
    
    pixhawk's avatar
    pixhawk committed
          Background style.
          \sa QwtSlider::QwtSlider
         */
    
        enum BGSTYLE {
            BgTrough = 0x1,
            BgSlot = 0x2,
    
    pixhawk's avatar
    pixhawk committed
            BgBoth = BgTrough | BgSlot
        };
    
        explicit QwtSlider(QWidget *parent,
    
                           Qt::Orientation = Qt::Horizontal,
                           ScalePos = NoScale, BGSTYLE bgStyle = BgTrough);
    
    pixhawk's avatar
    pixhawk committed
    #if QT_VERSION < 0x040000
        explicit QwtSlider(QWidget *parent, const char *name);
    #endif
    
    pixhawk's avatar
    pixhawk committed
        virtual ~QwtSlider();
    
    
        virtual void setOrientation(Qt::Orientation);
    
    pixhawk's avatar
    pixhawk committed
    
        void setBgStyle(BGSTYLE);
        BGSTYLE bgStyle() const;
    
    pixhawk's avatar
    pixhawk committed
        void setScalePosition(ScalePos s);
        ScalePos scalePosition() const;
    
        int thumbLength() const;
        int thumbWidth() const;
        int borderWidth() const;
    
        void setThumbLength(int l);
        void setThumbWidth(int w);
        void setBorderWidth(int bw);
        void setMargins(int x, int y);
    
        virtual QSize sizeHint() const;
        virtual QSize minimumSizeHint() const;
    
    pixhawk's avatar
    pixhawk committed
        void setScaleDraw(QwtScaleDraw *);
        const QwtScaleDraw *scaleDraw() const;
    
    protected:
        virtual double getValue(const QPoint &p);
    
        virtual void getScrollMode(const QPoint &p,
                                   int &scrollMode, int &direction);
    
    pixhawk's avatar
    pixhawk committed
    
        void draw(QPainter *p, const QRect& update_rect);
        virtual void drawSlider (QPainter *p, const QRect &r);
        virtual void drawThumb(QPainter *p, const QRect &, int pos);
    
        virtual void resizeEvent(QResizeEvent *e);
        virtual void paintEvent (QPaintEvent *e);
    
        virtual void valueChange();
        virtual void rangeChange();
        virtual void scaleChange();
        virtual void fontChange(const QFont &oldFont);
    
        void layoutSlider( bool update = true );
        int xyPosition(double v) const;
    
        QwtScaleDraw *scaleDraw();
    
    private:
        void initSlider(Qt::Orientation, ScalePos scalePos, BGSTYLE bgStyle);
    
        class PrivateData;
        PrivateData *d_data;
    };
    
    #endif