医院网站建设中标,东莞app下载,怎么编写自己的网站,wordpress主题导入Demo1.概述
QwtPolarPlot是Qwt库中用于绘制极坐标图的类。它继承自QwtPolarItemDict和QFrame类#xff0c;并且可以作为QwtPlot控件的一部分使用。
以下是类的继承关系图#xff1a; 2.常用方法
设置标签#xff1a;
void setTitle (const QString )void setTitle (con…1.概述
QwtPolarPlot是Qwt库中用于绘制极坐标图的类。它继承自QwtPolarItemDict和QFrame类并且可以作为QwtPlot控件的一部分使用。
以下是类的继承关系图 2.常用方法
设置标签
void setTitle (const QString )void setTitle (const QwtText )
设置范围
void setScale (int scaleId, double min, double max, double step0)
设置主刻度间隔的最大数量
void setScaleMaxMinor (int scaleId, int maxMinor)
设置背景色
void setPlotBackground (const QBrush c) 插入图例
void insertLegend (QwtAbstractLegend *, LegendPositionRightLegend, double ratio-1.0) 3.示例 源码画Rose曲线时QwtPolarCurve设置的数据类型是QwtSeriesData QwtPointPolar QwtSeriesData QwtPointPolar 中有三个纯虚函数需要我们来实现分别是
virtual size_t size () const 0virtual QwtPointPolar sample (size_t i) const 0virtual QRectF boundingRect () const 0
#include PolarPlotWidget.h
#include ui_PolarPlotWidget.h
#include qwt_plot.h
#include qwt_plot_curve.h
#include qwt_text.h
#include qwt_legend.h
#include qwt_symbol.h
#include qwt_plot_marker.h
#include qwt_plot_grid.h
#include qwt_scale_div.h
#include qwt_plot_canvas.h
#include qwt_plot_legenditem.h
#include qwt_math.h
#include qwt_plot_layout.h
#include qwt_plot_barchart.h
#include qwt_scale_draw.h
#include qwt_column_symbol.h
#include qwt_plot_renderer.h
#include qwt_plot_multi_barchart.h
#include qwt_polar_plot.h
#include qwt_polar_grid.h
#include qwt_polar_marker.h
#include qwt_polar_curve.hclass Data : public QwtSeriesData QwtPointPolar
{public:Data( const QwtInterval radialInterval,const QwtInterval azimuthInterval, size_t size ): m_radialInterval( radialInterval ), m_azimuthInterval( azimuthInterval ), m_size( size ){}virtual size_t size() const QWT_OVERRIDE{return m_size;}protected:QwtInterval m_radialInterval;QwtInterval m_azimuthInterval;size_t m_size;
};class RoseData : public Data
{public:RoseData( const QwtInterval radialInterval,const QwtInterval azimuthInterval, size_t size ): Data( radialInterval, azimuthInterval, size ){}virtual QwtPointPolar sample( size_t i ) const QWT_OVERRIDE{const double stepA m_azimuthInterval.width() / m_size;const double a m_azimuthInterval.minValue() i * stepA;const double d a / 360.0 * M_PI;const double r m_radialInterval.maxValue() * qAbs( qSin( 4 * d ) );return QwtPointPolar( a, r );}virtual QRectF boundingRect() const QWT_OVERRIDE{if ( cachedBoundingRect.width() 0.0 )cachedBoundingRect qwtBoundingRect( *this );return cachedBoundingRect;}
};static QwtPolarPlot *g_plot nullptr;
static QwtPolarGrid *g_grid nullptr;
static const QwtInterval s_radialInterval( 0.0, 10.0 );
static const QwtInterval s_azimuthInterval( 0.0, 360.0 );PolarPlotWidget::PolarPlotWidget(QWidget *parent) :QWidget(parent),ui(new Ui::PolarPlotWidget)
{ui-setupUi(this);g_plot new QwtPolarPlot(QwtText( Polar Plot Demo ), this);g_plot-setAutoReplot( false );g_plot-setPlotBackground( Qt::darkBlue );ui-verticalLayout-addWidget(g_plot);//设置角度范围g_plot-setScale( QwtPolar::Azimuth,s_azimuthInterval.minValue(), s_azimuthInterval.maxValue(),s_azimuthInterval.width() / 12 );g_plot-setScaleMaxMinor( QwtPolar::Azimuth, 2 );//设置半径范围g_plot-setScale( QwtPolar::Radius,s_radialInterval.minValue(), s_radialInterval.maxValue() );// 设置网格效果属性g_grid new QwtPolarGrid();g_grid-setPen( QPen( Qt::white ) );for ( int scaleId 0; scaleId QwtPolar::ScaleCount; scaleId ){g_grid-showGrid( scaleId );g_grid-showMinorGrid( scaleId );QPen minorPen( Qt::gray );g_grid-setMinorGridPen( scaleId, minorPen );}g_grid-setAxisPen( QwtPolar::AxisAzimuth, QPen( Qt::black ) );g_grid-showAxis( QwtPolar::AxisAzimuth, true );g_grid-showAxis( QwtPolar::AxisLeft, false );g_grid-showAxis( QwtPolar::AxisRight, true );g_grid-showAxis( QwtPolar::AxisTop, true );g_grid-showAxis( QwtPolar::AxisBottom, false );g_grid-showGrid( QwtPolar::Azimuth, true );g_grid-showGrid( QwtPolar::Radius, true );g_grid-attach( g_plot );// 设置曲线const int numPoints 200;QwtPolarCurve* curve new QwtPolarCurve();curve-setStyle( QwtPolarCurve::Lines );curve-setTitle( Rose );curve-setPen( QPen( Qt::red, 2 ) );curve-setSymbol( new QwtSymbol( QwtSymbol::Rect,QBrush( Qt::cyan ), QPen( Qt::white ), QSize( 3, 3 ) ) );curve-setData(new RoseData( s_radialInterval, s_azimuthInterval, numPoints ) );curve-attach( g_plot );// 设置标记QwtPolarMarker* marker new QwtPolarMarker();marker-setPosition( QwtPointPolar( 57.3, 4.72 ) );marker-setSymbol( new QwtSymbol( QwtSymbol::Ellipse,QBrush( Qt::white ), QPen( Qt::green ), QSize( 9, 9 ) ) );marker-setLabelAlignment( Qt::AlignHCenter | Qt::AlignTop );QwtText text( Marker );text.setColor( Qt::black );QColor bg( Qt::white );bg.setAlpha( 200 );text.setBackgroundBrush( QBrush( bg ) );marker-setLabel( text );marker-attach( g_plot );QwtLegend* legend new QwtLegend;g_plot-insertLegend( legend, QwtPolarPlot::BottomLegend );
}PolarPlotWidget::~PolarPlotWidget()
{delete ui;
}