qwt_wheel.h 2.38 KB
Newer Older
pixhawk's avatar
pixhawk committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
/* -*- 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
 *****************************************************************************/

#ifndef QWT_WHEEL_H
#define QWT_WHEEL_H

#include "qwt_global.h"
#include "qwt_abstract_slider.h"

/*!
  \brief The Wheel Widget

  The wheel widget can be used to change values over a very large range
  in very small steps. Using the setMass member, it can be configured
  as a flywheel.

  \sa The radio example.
*/
class QWT_EXPORT QwtWheel : public QwtAbstractSlider
{
    Q_OBJECT 
    Q_PROPERTY( double totalAngle READ totalAngle WRITE setTotalAngle )
    Q_PROPERTY( double viewAngle READ viewAngle WRITE setViewAngle )
    Q_PROPERTY( int    tickCnt READ tickCnt WRITE setTickCnt )
    Q_PROPERTY( int    internalBorder READ internalBorder WRITE setInternalBorder )
    Q_PROPERTY( double mass READ mass WRITE setMass )
            
public:
    explicit QwtWheel(QWidget *parent = NULL);
#if QT_VERSION < 0x040000
    explicit QwtWheel(QWidget *parent, const char *name);
#endif
    virtual ~QwtWheel();

    virtual void setOrientation(Qt::Orientation);

    double totalAngle() const;
    double viewAngle() const;
    int tickCnt() const;
    int internalBorder() const;

    double mass() const;

    void setTotalAngle (double angle);
    void setTickCnt(int cnt);
    void setViewAngle(double angle);
    void setInternalBorder(int width);
    void setMass(double val);
    void setWheelWidth( int w );

    virtual QSize sizeHint() const;
    virtual QSize minimumSizeHint() const;

protected:
    virtual void resizeEvent(QResizeEvent *e);
    virtual void paintEvent(QPaintEvent *e);

    void layoutWheel( bool update = true );
    void draw(QPainter *p, const QRect& update_rect);
    void drawWheel(QPainter *p, const QRect &r);
    void drawWheelBackground(QPainter *p, const QRect &r);
    void setColorArray();

    virtual void valueChange();
    virtual void paletteChange( const QPalette &);

    virtual double getValue(const QPoint &p);
    virtual void getScrollMode(const QPoint &p, 
        int &scrollMode, int &direction);

private:
    void initWheel();

    class PrivateData;
    PrivateData *d_data;
};

#endif