1、首先需要下载相应的QChart库
一般在安装QT时会选择此库,如若没有,请自行下载。
2、在工程文件中添加:QT += charts
3、新建一个极坐标系的封装类PolarChart:
4、头文件:
(1)导入库
(2)添加:QT_CHARTS_USE_NAMESPACE
(3)实例相关类:
5、CPP文件:
(1)曲线设置
(2)角坐标系设置
(3)极坐标系设置
(4)极坐标系设置
(5)利用QChartView控件显示:
5、完整代码:
(1)h文件
其中void AddPoint(double Angular, double Radia)是数据接口函数。
#ifndef POLARCHART_H
#define POLARCHART_H
#include <QChart>
#include <QtCharts/QSplineSeries>
#include <QtCharts/QValueAxis>
#include <QtCharts/QPolarChart>
#include <QChartView>
QT_CHARTS_USE_NAMESPACE
class PolarChart
{
public:
PolarChart();
//画布
QChartView *chartView;
//图表
QtCharts::QPolarChart* chart;
//曲线
QtCharts::QLineSeries* lineSerises;
//角度坐标轴
QtCharts::QValueAxis* angularAxis;
//弧长坐标轴
QtCharts::QValueAxis *radialAxis;
void AddPoint(double Angular, double Radia);
//设置图表标题
void setChartName(QString Name);
//极坐标角度范围 默认0~360
void setRangeAng(int A0, int A1);
//极坐标弧长范围 默认0~200
void setRangeRad(int R0, int R1);
//视图显示大小 默认800*800
void setResizeView(int wide, int heigh);
//设置画点是否标记可见 默认不可见
void setPointsVisible(bool ISVisible);
};
#endif // POLARCHART_H
(2)cpp文件
#include "polarchart.h"
PolarChart::PolarChart()
{
chart = new QtCharts::QPolarChart;
chartView = new QChartView;
lineSerises = new QtCharts::QLineSeries;
angularAxis = new QtCharts::QValueAxis();
radialAxis = new QtCharts::QValueAxis();
lineSerises->setVisible(true); //曲线可见
lineSerises->setColor(QColor(0,100,255)); //曲线颜色设置
lineSerises->setPointsVisible(false); //曲线系列点标可见的设置
chart->addSeries(lineSerises); //加入表中
//将legend(图例)隐藏,当然,也可以选择不隐藏
chart->legend()->hide();
chart->setVisible(true);
chart->setBackgroundBrush(QColor(0,0,0));
//角度坐标轴设置
//第一个和最后一个间隔位于0/360度角
angularAxis->setTickCount(9);
angularAxis->setLabelFormat("%.1f");
//设置角度坐标系的范围是0~360度
angularAxis->setRange(0,360);
//将角度坐标轴加入到图形中去
chart->addAxis(angularAxis,QtCharts::QPolarChart::PolarOrientationAngular);
//设置弧长的坐标系设置
radialAxis->setTickCount(5);
radialAxis->setLabelFormat("%d");
radialAxis->setRange(0,200);
//将弧长坐标系加入到图形中去
chart->addAxis(radialAxis,QtCharts::QPolarChart::PolarOrientationRadial);
//将曲线和坐标轴绑定起来
lineSerises->attachAxis(angularAxis);
lineSerises->attachAxis(radialAxis);
chartView->setChart(chart);
chartView->resize(800, 800);
chartView->show();
}
void PolarChart::AddPoint(double Angular, double Radia)
{
//向曲线容器lineSerises中添加数据
lineSerises->append(Angular,Radia);
}
void PolarChart::setChartName(QString Name)
{
chart->setTitleBrush(QBrush(QColor(0,0,255)));//设置标题Brush
chart->setTitleFont(QFont("微软雅黑"));//设置标题字体
chart->setTitle(Name);
}
void PolarChart::setRangeAng(int A0, int A1)
{
angularAxis->setRange(A0,A1);
}
void PolarChart::setRangeRad(int R0, int R1)
{
radialAxis->setRange(R0,R1);
}
void PolarChart::setResizeView(int wide, int heigh)
{
chartView->resize(wide, heigh);
}
void PolarChart::setPointsVisible(bool ISVisible)
{
lineSerises->setPointsVisible(ISVisible);
}