123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 |
- /* -*- 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"
- class QwtRoundScaleDraw;
- /*!
- \brief The Knob Widget
- The QwtKnob widget imitates look and behavior of a volume knob on a radio.
- It looks similar to QDial - not to QwtDial.
- The value range of a knob might be divided into several turns.
- The layout of the knob depends on the knobWidth().
- - width > 0
- The diameter of the knob is fixed and the knob is aligned
- according to the alignment() flags inside of the contentsRect().
- - width <= 0
- The knob is extended to the minimum of width/height of the contentsRect()
- and aligned in the other direction according to alignment().
- Setting a fixed knobWidth() is helpful to align several knobs with different
- scale labels.
- \image html knob.png
- */
- class QWT_EXPORT QwtKnob: public QwtAbstractSlider
- {
- Q_OBJECT
- Q_ENUMS ( KnobStyle MarkerStyle )
- Q_PROPERTY( KnobStyle knobStyle READ knobStyle WRITE setKnobStyle )
- Q_PROPERTY( int knobWidth READ knobWidth WRITE setKnobWidth )
- Q_PROPERTY( Qt::Alignment alignment READ alignment WRITE setAlignment )
- Q_PROPERTY( double totalAngle READ totalAngle WRITE setTotalAngle )
- Q_PROPERTY( int numTurns READ numTurns WRITE setNumTurns )
- Q_PROPERTY( MarkerStyle markerStyle READ markerStyle WRITE setMarkerStyle )
- Q_PROPERTY( int markerSize READ markerSize WRITE setMarkerSize )
- Q_PROPERTY( int borderWidth READ borderWidth WRITE setBorderWidth )
- public:
- /*!
- \brief Style of the knob surface
- Depending on the KnobStyle the surface of the knob is
- filled from the brushes of the widget palette().
- \sa setKnobStyle(), knobStyle()
- */
- enum KnobStyle
- {
- //! Fill the knob with a brush from QPalette::Button.
- Flat,
- //! Build a gradient from QPalette::Midlight and QPalette::Button
- Raised,
- /*!
- Build a gradient from QPalette::Midlight, QPalette::Button
- and QPalette::Midlight
- */
- Sunken,
- /*!
- Build a radial gradient from QPalette::Button
- like it is used for QDial in various Qt styles.
- */
- Styled
- };
- /*!
- \brief Marker type
- The marker indicates the current value on the knob
- The default setting is a Notch marker.
- \sa setMarkerStyle(), setMarkerSize()
- */
- enum MarkerStyle
- {
- //! Don't paint any marker
- NoMarker = -1,
- //! Paint a single tick in QPalette::ButtonText color
- Tick,
- //! Paint a triangle in QPalette::ButtonText color
- Triangle,
- //! Paint a circle in QPalette::ButtonText color
- Dot,
- /*!
- Draw a raised ellipse with a gradient build from
- QPalette::Light and QPalette::Mid
- */
- Nub,
- /*!
- Draw a sunken ellipse with a gradient build from
- QPalette::Light and QPalette::Mid
- */
- Notch
- };
- explicit QwtKnob( QWidget* parent = NULL );
- virtual ~QwtKnob();
- void setAlignment( Qt::Alignment );
- Qt::Alignment alignment() const;
- void setKnobWidth( int );
- int knobWidth() const;
- void setNumTurns( int );
- int numTurns() const;
- void setTotalAngle ( double angle );
- double totalAngle() const;
- void setKnobStyle( KnobStyle );
- KnobStyle knobStyle() const;
- void setBorderWidth( int );
- int borderWidth() const;
- void setMarkerStyle( MarkerStyle );
- MarkerStyle markerStyle() const;
- void setMarkerSize( int );
- int markerSize() const;
- virtual QSize sizeHint() const;
- virtual QSize minimumSizeHint() const;
- void setScaleDraw( QwtRoundScaleDraw * );
- const QwtRoundScaleDraw *scaleDraw() const;
- QwtRoundScaleDraw *scaleDraw();
- QRect knobRect() const;
- protected:
- virtual void paintEvent( QPaintEvent * );
- virtual void changeEvent( QEvent * );
- virtual void drawKnob( QPainter *, const QRectF & ) const;
- virtual void drawFocusIndicator( QPainter * ) const;
- virtual void drawMarker( QPainter *,
- const QRectF &, double angle ) const;
- virtual double scrolledTo( const QPoint & ) const;
- virtual bool isScrollPosition( const QPoint & ) const;
- private:
- class PrivateData;
- PrivateData *d_data;
- };
- #endif
|