Qwt User's Guide
svn
|
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