绘制面积图,则系列选择面积系列QAreaSeries
需要给系列设置上折线和下折线(QLineSeries),如果没有设置下折线,则默认x轴为下折线
1、创建图表视图
//1、创建图表视图
QChartView * view = new QChartView(this);
//开启抗锯齿
view -> setRenderHint(QPainter::Antialiasing);
2、创建图表,并将图表设置给图表视图
//2.创建图表
QChart * chart = new QChart();
//3.将图表设置给视图
view -> setChart(chart);
//设置标题
chart -> setTitle("面积图");
chart -> legend() -> show(); //显示或者隐藏图例(默认显示)
3、创建面积系列(QAreaSeries),
创建上折线和下折线(QLineSeries),并将上下折线设置给面积系列
设置面积系列的一些属性
将系列添加到图表中
//创建面积系列
QAreaSeries * area = new QAreaSeries(this);
//需要添加围成面积的下折线和上折线,
//没有上折线,不会显示;没有下折线,默认以x轴为下折线
QLineSeries * upper = new QLineSeries(this);
upper -> append(10, 130);
upper -> append(50, 180);
upper -> append(80, 120);
QLineSeries * lower = new QLineSeries(this);
lower -> append(25, 80);
lower -> append(90, 80);
//将上折线和下折线设置给面积系列
area -> setUpperSeries(upper);
area -> setLowerSeries(lower);
area -> setBrush(Qt::red); //设置面积图的颜色
area -> setPointsVisible(true); //设置点可见
area -> setPointLabelsVisible(true); //设置点的标签可见
area -> setName("哈哈"); //设置图例的内容
//将系列添加进图表中
chart -> addSeries(area);
4、使用QChart::createDefaultAxes()创建默认的x轴和y轴(根据内部的系列)
/使用createDefaultAxes()来创建轴
//添加系列后可以创建默认的坐标轴,一定要在addSeries之后调用,根据序列来确定默认的坐标轴
chart -> createDefaultAxes();
chart -> axes(Qt::Horizontal).at(0) -> setRange(0, 100);
chart -> axes(Qt::Vertical).at(0) -> setRange(0, 200);
完整代码
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include<QtCharts>
#include<QHBoxLayout>
#include<QAreaSeries>
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr) : QWidget(parent)
{
resize(800,600);
QHBoxLayout* h_box=new QHBoxLayout(this);
drawAreaPic();
}
~Widget()=default;
//画面积图
void drawAreaPic()
{
//1、创建图表视图
QChartView* view=new QChartView(this);
//开启抗锯齿
view->setRenderHint(QPainter::Antialiasing);
this->layout()->addWidget(view);
//2.创建图表
QChart* chart=new QChart();
//3.将图表设置给视图
view->setChart(chart);
//设置标题
chart->setTitle("面积图");
chart->legend()->show();//显示或者隐藏图例(默认显示)
//创建面积系列
QAreaSeries* area=new QAreaSeries(this);
//需要添加围成面积的下折线和上折线,
//没有上折线,不会显示;没有下折线,默认以x轴为下折线
QLineSeries* upper=new QLineSeries(this);
upper->append(10,130);
upper->append(50,180);
upper->append(80,120);
QLineSeries* lower=new QLineSeries(this);
lower->append(25,80);
lower->append(90,80);
//将上折线和下折线设置给面积系列
area->setUpperSeries(upper);
area->setLowerSeries(lower);
area->setBrush(Qt::red);//设置面积图的颜色
area->setPointsVisible(true);//设置点可见
area->setPointLabelsVisible(true);//设置点的标签可见
area->setName("哈哈");//设置图例的内容
//将系列添加进图表中
chart->addSeries(area);
//使用createDefaultAxes()来创建轴
//添加系列后可以创建默认的坐标轴,一定要在addSeries之后调用,根据序列来确定默认的坐标轴
chart->createDefaultAxes();
chart->axes(Qt::Horizontal).at(0)->setRange(0,100);
chart->axes(Qt::Vertical).at(0)->setRange(0,200);
}
};
#endif // WIDGET_H