QChart,极坐标,方向图

效果图
在这里插入图片描述
先添加
QT += charts
头文件

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
//以下是QtChart使用必备的几个
#include <QtCharts/QChartView>
#include <QtCharts/QPolarChart>
#include <QtCharts/QScatterSeries>
QT_CHARTS_USE_NAMESPACE

#include <QLineSeries>
#include <QValueAxis>



QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

    void InitPolarChart(QChartView *chartViewWD);               //初始极坐标绘图区域

    QLineSeries *seriesWD;  //曲线声明
    QScatterSeries *seriesWD2;
    QPolarChart *chartWD; //极坐标图表声明
    QValueAxis *angleAxis; //角坐标,相对应于直角坐标系的X轴
    QValueAxis* radiaAxis;//极坐标,相对应于直角坐标系的Y轴
    QChartView* chartViewWD; //画布声明


private:
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

主函数

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QGridLayout>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //曲线
    QLineSeries *seriesLine = new QLineSeries();
    seriesLine->setName("LinePolar");
    //图表
    QPolarChart *polarChart = new QPolarChart();
    polarChart->setParent(this);
    polarChart->addSeries(seriesLine);
    polarChart->setTitle("First Polar Chart");
  //坐标轴
    QValueAxis *angleAxis = new QValueAxis(this);
    angleAxis->setTickCount(9);
    angleAxis->setLabelFormat("%d");
    //角度
    polarChart->addAxis(angleAxis, QPolarChart::PolarOrientationAngular);

    QValueAxis *radiusAxis = new QValueAxis();
    radiusAxis->setTickCount(9);
    radiusAxis->setLabelFormat("%d");
    //半径
    polarChart->addAxis(radiusAxis, QPolarChart::PolarOrientationRadial);

    seriesLine->attachAxis(radiusAxis);
    seriesLine->attachAxis(angleAxis);

    radiusAxis->setRange(0, 100); //设置半径范围
    angleAxis->setRange(0, 360);    //设置角度范围

    //用公式来存坐标点
    float M_PI=3.14;
    for (int angle = 0; angle<= 360; angle += 10)
    {
        if(1)
            {
            double data;
            data = (angle)/180.0 *M_PI;
              float t=data;

             double lamda=0.01;
             double beta=200*M_PI;
             int  n=10;                 //天线阵元数目
             double d=lamda/4;  //0.01/4         //假设阵元间距为波长的四分之一

             double  W=beta*d*cos(t);
             double  z1=5*(W-0.5*M_PI);
             double  z2=0.5*(W-0.5*M_PI);

             double F1=sin(z1)/(10*sin(z2));
              F1=abs(F1);         //函数对数组元素进行绝对值处理的函数
             int K3=F1*100; //我去掉了小数点取整
         //把点存进去
             seriesLine->append(angle,K3);
             }
    }

    //绑定极坐标和视图
    QGridLayout *girdout=new QGridLayout(this);
    QChartView *polarChartView = new QChartView();
    polarChartView->setChart(polarChart);
    polarChartView->setRenderHint(QPainter::Antialiasing);

    girdout->addWidget(polarChartView);
    girdout->setParent(ui->centralwidget);
    polarChartView->setParent(ui->centralwidget);
}

MainWindow::~MainWindow()
{
    delete ui;
}

  • 8
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值