QT使用QChart绘制面积图

 更新时间:2024年11月19日 11:30:16   作者:姆路  
在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绘制面积图内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 简述C语言中system()函数与vfork()函数的使用方法

    简述C语言中system()函数与vfork()函数的使用方法

    这篇文章主要介绍了简述C语言中system()函数与vfork()函数的使用方法,是C语言入门学习中的基础知识,需要的朋友可以参考下
    2015-08-08
  • C++读取WAV音频文件的头部数据的实现方法

    C++读取WAV音频文件的头部数据的实现方法

    这篇文章主要介绍了C++读取WAV音频文件的头部数据的实现方法的相关资料,希望通过本文能帮助到大家,让大家实现这样的方法,需要的朋友可以参考下
    2017-10-10
  • C++基于递归和非递归算法判定两个二叉树结构是否完全相同(结构和数据都相同)

    C++基于递归和非递归算法判定两个二叉树结构是否完全相同(结构和数据都相同)

    这篇文章主要介绍了C++基于递归和非递归算法判定两个二叉树结构是否完全相同,若判断二叉树的结构和数据都相同则为完全相同.涉及C++二叉树的创建、遍历、比较等相关操作技巧,需要的朋友可以参考下
    2017-05-05
  • C语言数据结构哈希表详解

    C语言数据结构哈希表详解

    哈希表是一种根据关键码去寻找值的数据映射结构,该结构通过把关键码映射的位置去寻找存放值的地方,说起来可能感觉有点复杂,我想我举个例子你就会明白了,最典型的的例子就是字典
    2022-02-02
  • C++中的过滤器模式详解

    C++中的过滤器模式详解

    这篇文章详细介绍了STL中各种算法的类型、功能和使用方法,涵盖了非修改序列算法、修改序列算法、排序和相关算法、堆算法、最小/最大值算法、数值算法以及其他实用算法,感兴趣的朋友跟随小编一起看看吧
    2026-01-01
  • C/C++新建注册表项的代码示例

    C/C++新建注册表项的代码示例

    今天小编就为大家分享一篇关于C/C++新建注册表项的代码示例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • 利用C语言实现经典游戏斗兽棋

    利用C语言实现经典游戏斗兽棋

    《斗兽棋》是一款棋类游戏,整个游戏画面是分为两块区域,中间有河流分割两块区域,有桥梁可以让彼此的动物过河,要取得胜利,必须占领那一边动物的巢穴获胜利。本文将用C语言实现这一游戏,需要的可以参考一下
    2022-03-03
  • C语言实践设计开发飞机游戏

    C语言实践设计开发飞机游戏

    飞机大战想必是很多人童年时期的经典游戏,我们依旧能记得抱个老人机娱乐的场景,下面这篇文章主要给大家介绍了关于如何利用C语言写一个简单的飞机大战小游戏的相关资料,需要的朋友可以参考下
    2022-02-02
  • C++中strcpy()拷贝的3种写法示例详解

    C++中strcpy()拷贝的3种写法示例详解

    本文详细探讨了C++中字符串拷贝函数strcpy的实现与优化,提供了测试案例和使用场景建议,强调在性能与安全性之间的权衡,不同版本适用于不同场景:基础版适合高性能需求,安全版则优先保障稳定性,感兴趣的朋友跟随小编一起看看吧
    2026-05-05
  • QT5.12.5移植到ARM平台下的方法步骤

    QT5.12.5移植到ARM平台下的方法步骤

    本文主要介绍了QT5.12.5移植到ARM平台下的方法步骤,包括修改配置文件、代码修改以及测试运行,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-01-01

最新评论