qt_demoe/third/qcustomplotdemo/form/frmpolarplot.cpp

54 lines
1.9 KiB
C++

#include "frmpolarplot.h"
#include "ui_frmpolarplot.h"
#include "qdebug.h"
frmPolarPlot::frmPolarPlot(QWidget *parent) : QWidget(parent), ui(new Ui::frmPolarPlot)
{
ui->setupUi(this);
this->initForm();
}
frmPolarPlot::~frmPolarPlot()
{
delete ui;
}
void frmPolarPlot::initForm()
{
// Warning: Polar plots are a still a tech preview
ui->customPlot->plotLayout()->clear();
QCPPolarAxisAngular *angularAxis = new QCPPolarAxisAngular(ui->customPlot);
ui->customPlot->plotLayout()->addElement(0, 0, angularAxis);
/* This is how we could set the angular axis to show pi symbols instead of degree numbers:
QSharedPointer<QCPAxisTickerPi> ticker(new QCPAxisTickerPi);
ticker->setPiValue(180);
ticker->setTickCount(8);
polarAxis->setTicker(ticker);
*/
ui->customPlot->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom);
angularAxis->setRangeDrag(false);
angularAxis->setTickLabelMode(QCPPolarAxisAngular::lmUpright);
angularAxis->radialAxis()->setTickLabelMode(QCPPolarAxisRadial::lmUpright);
angularAxis->radialAxis()->setTickLabelRotation(0);
angularAxis->radialAxis()->setAngle(45);
angularAxis->grid()->setAngularPen(QPen(QColor(200, 200, 200), 0, Qt::SolidLine));
angularAxis->grid()->setSubGridType(QCPPolarGrid::gtAll);
QCPPolarGraph *g1 = new QCPPolarGraph(angularAxis, angularAxis->radialAxis());
QCPPolarGraph *g2 = new QCPPolarGraph(angularAxis, angularAxis->radialAxis());
g2->setPen(QPen(QColor(255, 150, 20)));
g2->setBrush(QColor(255, 150, 20, 50));
g1->setScatterStyle(QCPScatterStyle::ssDisc);
for (int i = 0; i < 100; ++i) {
g1->addData(i / 100.0 * 360.0, qSin(i / 100.0 * M_PI * 8) * 8 + 1);
g2->addData(i / 100.0 * 360.0, qSin(i / 100.0 * M_PI * 6) * 2);
}
angularAxis->setRange(0, 360);
angularAxis->radialAxis()->setRange(-10, 10);
}