Qwt User's Guide svn
qwt_plot.h
00001 /* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
00002  * Qwt Widget Library
00003  * Copyright (C) 1997   Josef Wilgen
00004  * Copyright (C) 2002   Uwe Rathmann
00005  *
00006  * This library is free software; you can redistribute it and/or
00007  * modify it under the terms of the Qwt License, Version 1.0
00008  *****************************************************************************/
00009 
00010 #ifndef QWT_PLOT_H
00011 #define QWT_PLOT_H
00012 
00013 #include "qwt_global.h"
00014 #include "qwt_text.h"
00015 #include "qwt_plot_dict.h"
00016 #include "qwt_scale_map.h"
00017 #include "qwt_interval.h"
00018 #include <qframe.h>
00019 
00020 class QwtPlotLayout;
00021 class QwtLegend;
00022 class QwtScaleWidget;
00023 class QwtScaleEngine;
00024 class QwtScaleDiv;
00025 class QwtScaleDraw;
00026 class QwtTextLabel;
00027 class QwtPlotCanvas;
00028 
00070 class QWT_EXPORT QwtPlot: public QFrame, public QwtPlotDict
00071 {
00072     Q_OBJECT
00073     Q_PROPERTY( QString propertiesDocument
00074         READ grabProperties WRITE applyProperties )
00075 
00076 public:
00078     enum Axis
00079     {
00081         yLeft,
00082 
00084         yRight,
00085 
00087         xBottom,
00088 
00090         xTop,
00091 
00093         axisCnt
00094     };
00095 
00103     enum LegendPosition
00104     {
00106         LeftLegend,
00107 
00109         RightLegend,
00110 
00112         BottomLegend,
00113 
00115         TopLegend,
00116 
00123         ExternalLegend
00124     };
00125 
00126     explicit QwtPlot( QWidget * = NULL );
00127     explicit QwtPlot( const QwtText &title, QWidget *p = NULL );
00128 
00129     virtual ~QwtPlot();
00130 
00131     void applyProperties( const QString & );
00132     QString grabProperties() const;
00133 
00134     void setAutoReplot( bool tf = true );
00135     bool autoReplot() const;
00136 
00137     // Layout
00138 
00139     QwtPlotLayout *plotLayout();
00140     const QwtPlotLayout *plotLayout() const;
00141 
00142     // Title
00143 
00144     void setTitle( const QString & );
00145     void setTitle( const QwtText &t );
00146     QwtText title() const;
00147 
00148     QwtTextLabel *titleLabel();
00149     const QwtTextLabel *titleLabel() const;
00150 
00151     // Canvas
00152 
00153     QwtPlotCanvas *canvas();
00154     const QwtPlotCanvas *canvas() const;
00155 
00156     void setCanvasBackground( const QBrush & );
00157     QBrush canvasBackground() const;
00158 
00159     void setCanvasLineWidth( int w );
00160     int canvasLineWidth() const;
00161 
00162     virtual QwtScaleMap canvasMap( int axisId ) const;
00163 
00164     double invTransform( int axisId, int pos ) const;
00165     double transform( int axisId, double value ) const;
00166 
00167     // Axes
00168 
00169     QwtScaleEngine *axisScaleEngine( int axisId );
00170     const QwtScaleEngine *axisScaleEngine( int axisId ) const;
00171     void setAxisScaleEngine( int axisId, QwtScaleEngine * );
00172 
00173     void setAxisAutoScale( int axisId, bool on = true );
00174     bool axisAutoScale( int axisId ) const;
00175 
00176     void enableAxis( int axisId, bool tf = true );
00177     bool axisEnabled( int axisId ) const;
00178 
00179     void setAxisFont( int axisId, const QFont &f );
00180     QFont axisFont( int axisId ) const;
00181 
00182     void setAxisScale( int axisId, double min, double max, double step = 0 );
00183     void setAxisScaleDiv( int axisId, const QwtScaleDiv & );
00184     void setAxisScaleDraw( int axisId, QwtScaleDraw * );
00185 
00186     double axisStepSize( int axisId ) const;
00187     QwtInterval axisInterval( int axisId ) const;
00188 
00189     const QwtScaleDiv *axisScaleDiv( int axisId ) const;
00190     QwtScaleDiv *axisScaleDiv( int axisId );
00191 
00192     const QwtScaleDraw *axisScaleDraw( int axisId ) const;
00193     QwtScaleDraw *axisScaleDraw( int axisId );
00194 
00195     const QwtScaleWidget *axisWidget( int axisId ) const;
00196     QwtScaleWidget *axisWidget( int axisId );
00197 
00198     void setAxisLabelAlignment( int axisId, Qt::Alignment );
00199     void setAxisLabelRotation( int axisId, double rotation );
00200 
00201     void setAxisTitle( int axisId, const QString & );
00202     void setAxisTitle( int axisId, const QwtText & );
00203     QwtText axisTitle( int axisId ) const;
00204 
00205     void setAxisMaxMinor( int axisId, int maxMinor );
00206     int axisMaxMinor( int axisId ) const;
00207 
00208     void setAxisMaxMajor( int axisId, int maxMajor );
00209     int axisMaxMajor( int axisId ) const;
00210 
00211     // Legend
00212 
00213     void insertLegend( QwtLegend *, LegendPosition = QwtPlot::RightLegend,
00214         double ratio = -1.0 );
00215 
00216     QwtLegend *legend();
00217     const QwtLegend *legend() const;
00218 
00219     // Misc
00220 
00221     virtual QSize sizeHint() const;
00222     virtual QSize minimumSizeHint() const;
00223 
00224     virtual void updateLayout();
00225     virtual void drawCanvas( QPainter * );
00226 
00227     void updateAxes();
00228 
00229     virtual bool event( QEvent * );
00230 
00231     virtual void drawItems( QPainter *, const QRectF &,
00232         const QwtScaleMap maps[axisCnt] ) const;
00233 
00234 Q_SIGNALS:
00245     void legendClicked( QwtPlotItem *plotItem );
00246 
00259     void legendChecked( QwtPlotItem *plotItem, bool on );
00260 
00261 public Q_SLOTS:
00262     virtual void replot();
00263     void autoRefresh();
00264 
00265 protected Q_SLOTS:
00266     virtual void legendItemClicked();
00267     virtual void legendItemChecked( bool );
00268 
00269 protected:
00270     static bool axisValid( int axisId );
00271 
00272     virtual void updateTabOrder();
00273 
00274     virtual void resizeEvent( QResizeEvent *e );
00275 
00276 private:
00277     void initAxesData();
00278     void deleteAxesData();
00279     void updateScaleDiv();
00280 
00281     void initPlot( const QwtText &title );
00282 
00283     class AxisData;
00284     AxisData *d_axisData[axisCnt];
00285 
00286     class PrivateData;
00287     PrivateData *d_data;
00288 };
00289 
00290 #endif
qmi style