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;
}

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-30 06:02:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-30 06:02:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-01-30 06:02:01       87 阅读
  4. Python语言-面向对象

    2024-01-30 06:02:01       96 阅读

热门阅读

  1. STL相关介绍及具体应用

    2024-01-30 06:02:01       39 阅读
  2. 网络相机 IPC 接入交换机的问题

    2024-01-30 06:02:01       56 阅读
  3. Open CASCADE学习| 提取曲面的PCurve

    2024-01-30 06:02:01       56 阅读
  4. Chrony工具强制NTP时间同步

    2024-01-30 06:02:01       61 阅读
  5. 深度学习任务

    2024-01-30 06:02:01       61 阅读
  6. 洛谷p1157组合的输出

    2024-01-30 06:02:01       45 阅读
  7. Leetcode 998. Maximum Binary Tree II (二叉树构建好题)

    2024-01-30 06:02:01       52 阅读
  8. springboot mapstruct

    2024-01-30 06:02:01       53 阅读
  9. ES6模块化导入与导出的方式

    2024-01-30 06:02:01       60 阅读