C 语言

关注公众号 jb51net

关闭
首页 > 软件编程 > C 语言 > QT QChart绘制面积图

QT使用QChart绘制面积图

作者:姆路

在Qt中使用QChart类可以快速绘制一个图表出来,比如折线图、饼图、柱状图等,本文就来为大家介绍一下如何利用QChart绘制简单的面积图吧

绘制面积图,则系列选择面积系列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

到此这篇关于QT使用QChart绘制面积图的文章就介绍到这了,更多相关QT QChart绘制面积图内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文