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 <qframe.h> 00014 #include "qwt_global.h" 00015 #include "qwt_array.h" 00016 #include "qwt_text.h" 00017 #include "qwt_plot_dict.h" 00018 #include "qwt_scale_map.h" 00019 #include "qwt_plot_printfilter.h" 00020 00021 class QwtPlotLayout; 00022 class QwtLegend; 00023 class QwtScaleWidget; 00024 class QwtScaleEngine; 00025 class QwtScaleDiv; 00026 class QwtScaleDraw; 00027 class QwtTextLabel; 00028 class QwtPlotCanvas; 00029 class QwtPlotPrintFilter; 00030 00072 class QWT_EXPORT QwtPlot: public QFrame, public QwtPlotDict 00073 { 00074 Q_OBJECT 00075 Q_PROPERTY( QString propertiesDocument 00076 READ grabProperties WRITE applyProperties ) 00077 00078 public: 00087 enum Axis 00088 { 00089 yLeft, 00090 yRight, 00091 xBottom, 00092 xTop, 00093 00094 axisCnt 00095 }; 00096 00119 enum LegendPosition 00120 { 00121 LeftLegend, 00122 RightLegend, 00123 BottomLegend, 00124 TopLegend, 00125 00126 ExternalLegend 00127 }; 00128 00129 explicit QwtPlot(QWidget * = NULL); 00130 explicit QwtPlot(const QwtText &title, QWidget *p = NULL); 00131 #if QT_VERSION < 0x040000 00132 explicit QwtPlot(QWidget *, const char* name); 00133 #endif 00134 00135 virtual ~QwtPlot(); 00136 00137 void applyProperties(const QString &); 00138 QString grabProperties() const; 00139 00140 void setAutoReplot(bool tf = true); 00141 bool autoReplot() const; 00142 00143 void print(QPaintDevice &p, 00144 const QwtPlotPrintFilter & = QwtPlotPrintFilter()) const; 00145 virtual void print(QPainter *, const QRect &rect, 00146 const QwtPlotPrintFilter & = QwtPlotPrintFilter()) const; 00147 00148 // Layout 00149 00150 QwtPlotLayout *plotLayout(); 00151 const QwtPlotLayout *plotLayout() const; 00152 00153 void setMargin(int margin); 00154 int margin() const; 00155 00156 // Title 00157 00158 void setTitle(const QString &); 00159 void setTitle(const QwtText &t); 00160 QwtText title() const; 00161 00162 QwtTextLabel *titleLabel(); 00163 const QwtTextLabel *titleLabel() const; 00164 00165 // Canvas 00166 00167 QwtPlotCanvas *canvas(); 00168 const QwtPlotCanvas *canvas() const; 00169 00170 void setCanvasBackground (const QColor &c); 00171 const QColor& canvasBackground() const; 00172 00173 void setCanvasLineWidth(int w); 00174 int canvasLineWidth() const; 00175 00176 virtual QwtScaleMap canvasMap(int axisId) const; 00177 00178 double invTransform(int axisId, int pos) const; 00179 int transform(int axisId, double value) const; 00180 00181 // Axes 00182 00183 QwtScaleEngine *axisScaleEngine(int axisId); 00184 const QwtScaleEngine *axisScaleEngine(int axisId) const; 00185 void setAxisScaleEngine(int axisId, QwtScaleEngine *); 00186 00187 void setAxisAutoScale(int axisId); 00188 bool axisAutoScale(int axisId) const; 00189 00190 void enableAxis(int axisId, bool tf = true); 00191 bool axisEnabled(int axisId) const; 00192 00193 void setAxisFont(int axisId, const QFont &f); 00194 QFont axisFont(int axisId) const; 00195 00196 void setAxisScale(int axisId, double min, double max, double step = 0); 00197 void setAxisScaleDiv(int axisId, const QwtScaleDiv &); 00198 void setAxisScaleDraw(int axisId, QwtScaleDraw *); 00199 00200 double axisStepSize(int axisId) const; 00201 00202 const QwtScaleDiv *axisScaleDiv(int axisId) const; 00203 QwtScaleDiv *axisScaleDiv(int axisId); 00204 00205 const QwtScaleDraw *axisScaleDraw(int axisId) const; 00206 QwtScaleDraw *axisScaleDraw(int axisId); 00207 00208 const QwtScaleWidget *axisWidget(int axisId) const; 00209 QwtScaleWidget *axisWidget(int axisId); 00210 00211 #if QT_VERSION < 0x040000 00212 void setAxisLabelAlignment(int axisId, int); 00213 #else 00214 void setAxisLabelAlignment(int axisId, Qt::Alignment); 00215 #endif 00216 void setAxisLabelRotation(int axisId, double rotation); 00217 00218 void setAxisTitle(int axisId, const QString &); 00219 void setAxisTitle(int axisId, const QwtText &); 00220 QwtText axisTitle(int axisId) const; 00221 00222 void setAxisMaxMinor(int axisId, int maxMinor); 00223 int axisMaxMajor(int axisId) const; 00224 void setAxisMaxMajor(int axisId, int maxMajor); 00225 int axisMaxMinor(int axisId) const; 00226 00227 // Legend 00228 00229 void insertLegend(QwtLegend *, LegendPosition = QwtPlot::RightLegend, 00230 double ratio = -1.0); 00231 00232 QwtLegend *legend(); 00233 const QwtLegend *legend() const; 00234 00235 // Misc 00236 00237 virtual void polish(); 00238 virtual QSize sizeHint() const; 00239 virtual QSize minimumSizeHint() const; 00240 00241 virtual void updateLayout(); 00242 virtual void drawCanvas(QPainter *); 00243 00244 void updateAxes(); 00245 00246 virtual bool event(QEvent *); 00247 00248 signals: 00259 void legendClicked(QwtPlotItem *plotItem); 00260 00273 void legendChecked(QwtPlotItem *plotItem, bool on); 00274 00275 public slots: 00276 virtual void clear(); 00277 00278 virtual void replot(); 00279 void autoRefresh(); 00280 00281 protected slots: 00282 virtual void legendItemClicked(); 00283 virtual void legendItemChecked(bool); 00284 00285 protected: 00286 static bool axisValid(int axisId); 00287 00288 virtual void drawItems(QPainter *, const QRect &, 00289 const QwtScaleMap maps[axisCnt], 00290 const QwtPlotPrintFilter &) const; 00291 00292 virtual void updateTabOrder(); 00293 00294 virtual void resizeEvent(QResizeEvent *e); 00295 00296 virtual void printLegendItem(QPainter *, 00297 const QWidget *, const QRect &) const; 00298 00299 virtual void printTitle(QPainter *, const QRect &) const; 00300 00301 virtual void printScale(QPainter *, int axisId, int startDist, int endDist, 00302 int baseDist, const QRect &) const; 00303 00304 virtual void printCanvas(QPainter *, 00305 const QRect &boundingRect, const QRect &canvasRect, 00306 const QwtScaleMap maps[axisCnt], const QwtPlotPrintFilter &) const; 00307 00308 virtual void printLegend(QPainter *, const QRect &) const; 00309 00310 private: 00311 void initAxesData(); 00312 void deleteAxesData(); 00313 void updateScaleDiv(); 00314 00315 void initPlot(const QwtText &title); 00316 00317 class AxisData; 00318 AxisData *d_axisData[axisCnt]; 00319 00320 class PrivateData; 00321 PrivateData *d_data; 00322 }; 00323 00324 #endif
Generated on Wed Sep 2 18:37:21 2009 for Qwt User's Guide by 1.6.1