| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 | /* -*- 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_KNOB_H#define QWT_KNOB_H#include "qwt_global.h"#include "qwt_abstract_slider.h"#include "qwt_abstract_scale.h"class QwtRoundScaleDraw;/*!  \brief The Knob Widget  The QwtKnob widget imitates look and behaviour of a volume knob on a radio.  It contains a scale around the knob which is set up automatically or can  be configured manually (see QwtAbstractScale).  Automatic scrolling is enabled when the user presses a mouse  button on the scale. For a description of signals, slots and other  members, see QwtAbstractSlider.  \image html knob.png  \sa   QwtAbstractSlider and QwtAbstractScale for the descriptions    of the inherited members.*/class QWT_EXPORT QwtKnob : public QwtAbstractSlider, public QwtAbstractScale{    Q_OBJECT    Q_ENUMS ( Symbol )    Q_PROPERTY( int knobWidth READ knobWidth WRITE setKnobWidth )    Q_PROPERTY( int borderWidth READ borderWidth WRITE setBorderWidth )    Q_PROPERTY( double totalAngle READ totalAngle WRITE setTotalAngle )    Q_PROPERTY( Symbol symbol READ symbol WRITE setSymbol )public:    /*!        Symbol        \sa setSymbol()    */    enum Symbol     {         Line,         Dot     };    explicit QwtKnob( QWidget* parent = NULL );    virtual ~QwtKnob();    void setKnobWidth( int w );    int knobWidth() const;    void setTotalAngle ( double angle );    double totalAngle() const;    void setBorderWidth( int bw );    int borderWidth() const;    void setSymbol( Symbol );    Symbol symbol() const;    virtual QSize sizeHint() const;    virtual QSize minimumSizeHint() const;    void setScaleDraw( QwtRoundScaleDraw * );    const QwtRoundScaleDraw *scaleDraw() const;    QwtRoundScaleDraw *scaleDraw();protected:    virtual void paintEvent( QPaintEvent *e );    virtual void resizeEvent( QResizeEvent *e );    void draw( QPainter *p, const QRect& ur );    void drawKnob( QPainter *p, const QRect &r );    void drawMarker( QPainter *p, double arc, const QColor &c );private:    void initKnob();    void layoutKnob( bool update = true );    double getValue( const QPoint &p );    void getScrollMode( const QPoint &p, int &scrollMode, int &direction );    void recalcAngle();    virtual void valueChange();    virtual void rangeChange();    virtual void scaleChange();    virtual void fontChange( const QFont &oldFont );    class PrivateData;    PrivateData *d_data;};#endif
 |