Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef QWT_DIAL_H
00013 #define QWT_DIAL_H 1
00014
00015 #include <qframe.h>
00016 #include <qpalette.h>
00017 #include "qwt_global.h"
00018 #include "qwt_abstract_slider.h"
00019 #include "qwt_round_scale_draw.h"
00020
00021 class QwtDialNeedle;
00022 class QwtDial;
00023
00029 class QWT_EXPORT QwtDialScaleDraw: public QwtRoundScaleDraw
00030 {
00031 public:
00032 explicit QwtDialScaleDraw(QwtDial *);
00033 virtual QwtText label(double value) const;
00034
00035 void setPenWidth(uint);
00036 uint penWidth() const;
00037
00038 private:
00039 QwtDial *d_parent;
00040 int d_penWidth;
00041 };
00042
00067 class QWT_EXPORT QwtDial: public QwtAbstractSlider
00068 {
00069 Q_OBJECT
00070
00071 Q_ENUMS(Shadow)
00072 Q_ENUMS(Mode)
00073 Q_ENUMS(Direction)
00074
00075 Q_PROPERTY(bool visibleBackground READ hasVisibleBackground WRITE showBackground)
00076 Q_PROPERTY(int lineWidth READ lineWidth WRITE setLineWidth)
00077 Q_PROPERTY(Shadow frameShadow READ frameShadow WRITE setFrameShadow)
00078 Q_PROPERTY(Mode mode READ mode WRITE setMode)
00079 Q_PROPERTY(double origin READ origin WRITE setOrigin)
00080 Q_PROPERTY(bool wrapping READ wrapping WRITE setWrapping)
00081 Q_PROPERTY(Direction direction READ direction WRITE setDirection)
00082
00083 friend class QwtDialScaleDraw;
00084 public:
00085
00094 enum Shadow
00095 {
00096 Plain = QFrame::Plain,
00097 Raised = QFrame::Raised,
00098 Sunken = QFrame::Sunken
00099 };
00100
00102 enum ScaleOptions
00103 {
00104 ScaleBackbone = 1,
00105 ScaleTicks = 2,
00106 ScaleLabel = 4
00107 };
00108
00114 enum Mode
00115 {
00116 RotateNeedle,
00117 RotateScale
00118 };
00119
00123 enum Direction
00124 {
00125 Clockwise,
00126 CounterClockwise
00127 };
00128
00129 explicit QwtDial( QWidget *parent = NULL);
00130 #if QT_VERSION < 0x040000
00131 explicit QwtDial( QWidget *parent, const char *name);
00132 #endif
00133
00134 virtual ~QwtDial();
00135
00136 void setFrameShadow(Shadow);
00137 Shadow frameShadow() const;
00138
00139 bool hasVisibleBackground() const;
00140 void showBackground(bool);
00141
00142 void setLineWidth(int);
00143 int lineWidth() const;
00144
00145 void setMode(Mode);
00146 Mode mode() const;
00147
00148 virtual void setWrapping(bool);
00149 bool wrapping() const;
00150
00151 virtual void setScale(int maxMajIntv, int maxMinIntv, double step = 0.0);
00152
00153 void setScaleArc(double min, double max);
00154 void setScaleOptions(int);
00155 void setScaleTicks(int minLen, int medLen, int majLen, int penWidth = 1);
00156
00157 double minScaleArc() const;
00158 double maxScaleArc() const;
00159
00160 virtual void setOrigin(double);
00161 double origin() const;
00162
00163 void setDirection(Direction);
00164 Direction direction() const;
00165
00166 virtual void setNeedle(QwtDialNeedle *);
00167 const QwtDialNeedle *needle() const;
00168 QwtDialNeedle *needle();
00169
00170 QRect boundingRect() const;
00171 QRect contentsRect() const;
00172 virtual QRect scaleContentsRect() const;
00173
00174 virtual QSize sizeHint() const;
00175 virtual QSize minimumSizeHint() const;
00176
00177 virtual void setScaleDraw(QwtDialScaleDraw *);
00178
00179 QwtDialScaleDraw *scaleDraw();
00180 const QwtDialScaleDraw *scaleDraw() const;
00181
00182 protected:
00183 virtual void paintEvent(QPaintEvent *);
00184 virtual void resizeEvent(QResizeEvent *);
00185 virtual void keyPressEvent(QKeyEvent *);
00186
00187 virtual void updateMask();
00188
00189 virtual void drawFrame(QPainter *p);
00190 virtual void drawContents(QPainter *) const;
00191 virtual void drawFocusIndicator(QPainter *) const;
00192
00193 virtual void drawScale(QPainter *, const QPoint ¢er,
00194 int radius, double origin, double arcMin, double arcMax) const;
00195
00205 virtual void drawScaleContents(QPainter *painter, const QPoint ¢er,
00206 int radius) const;
00207
00208 virtual void drawNeedle(QPainter *, const QPoint &,
00209 int radius, double direction, QPalette::ColorGroup) const;
00210
00211 virtual QwtText scaleLabel(double) const;
00212 void updateScale();
00213
00214 virtual void rangeChange();
00215 virtual void valueChange();
00216
00217 virtual double getValue(const QPoint &);
00218 virtual void getScrollMode(const QPoint &,
00219 int &scrollMode, int &direction);
00220
00221 private:
00222 void initDial();
00223
00224 class PrivateData;
00225 PrivateData *d_data;
00226 };
00227
00228 #endif