我的编程空间,编程开发者的网络收藏夹
学习永远不晚

QtQChart实现折线图的绘制

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

QtQChart实现折线图的绘制

前言

QChart  是常用的图表;我这里做了一个 default 和 custom

1.使用

Qt5.9及以上版本;

pro文件中添加QT += charts

.在使用QChart的各个控件之前,必须先声明一个命名空间。如:

QT_CHARTS_USE_NAMESPACE
QT_BEGIN_NAMESPACE

QChart和QChartView的关系:

QChart和QChartView的关系类似于QGraphicsScene和QGraphicsView的关系,QChart本身是用来存放需要展示的控件的类,而QChartView则是用于人眼识别观察的入口。

所有的更改都是在QChart上发生的,不过更改的结果是通过QChartView来进行展示的

2.效果如下

3.具体实现如下

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
 
#include <QMainWindow>
 
#include <QtCharts>
#include <QChartView>
#include <QSplineSeries>
 
QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
 
class MainWindow : public QMainWindow
{
    Q_OBJECT
 
public:
    explicit MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
 
private slots:
    void on_pushButton_clicked();
 
    void on_pushButton_2_clicked();
 
private:
    Ui::MainWindow *ui;
 
};
 
#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
 
#pragma execution_character_set("utf-8")
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
 
 
}
 
MainWindow::~MainWindow()
{
    delete ui;
}
 
void MainWindow::on_pushButton_clicked()
{
    QLineSeries *lineSeries = new QLineSeries();        //创建折线系列
 
 
       QChartView *chartView = new QChartView(this);
 
 
       
 
       for(quint8 i=0; i<100; i++)
 
       {
 
           lineSeries->append(i,qrand()%300);
 
       }
 
 
       lineSeries->setName("red line");                  //设置系列名称
 
 
       QChart * mChart = new QChart();                          //创建图标对象
 
 
       mChart->addSeries(lineSeries);                  //向图表中添加系列
 
 
       mChart->createDefaultAxes();                       //创建默认的坐标,必须在addSeries之后调用
 
       mChart->setTheme(QChart::ChartThemeDark);           //设置图标主题
 
 
       mChart->setTitle("qrand");                       //设置图标名称
 
 
      // mChart->legend()->hide();                          //隐藏图例,也就是不显示系列名称了
 
 
       chartView->setChart(mChart);                    //向chartView中添加图标
 
 
       chartView->resize(QSize(500,300));              //重新设置chartView的大小
 
 
       chartView->setRenderHints(QPainter::Antialiasing);//消除边缘,看起来平滑一些
 
 
       ui->horizontalLayout->addWidget(chartView);     //把chartView放到水平布局中(在ui中拖一个水平布局)
}
 
void MainWindow::on_pushButton_2_clicked()
{
       QLineSeries *lineSeries = new QLineSeries();        //创建折线系列
       QChartView *chartView = new QChartView(this);
 
       for(quint8 i=0; i<100; i++)
       {
           lineSeries->append(i,qrand()%300);
       }
 
 
       lineSeries->setName("red line");
 
       QChart * mChart = new QChart();
       mChart->addSeries(lineSeries);
 
 
       //mChart->createDefaultAxes();
       QValueAxis *axisX = new QValueAxis;
       axisX->setRange(0, 300); //设置坐标轴范围
       axisX->setTickCount(5); //主分隔个数
       axisX->setMinorTickCount(2);//4
       mChart->addAxis(axisX,Qt::AlignLeft ); //坐标轴添加到图表,并指定方向
       lineSeries->attachAxis(axisX); //序列 series0 附加坐标轴
 
 
       QValueAxis *axisY = new QValueAxis;
       axisY->setRange( 0,  100);
       axisY->setTickCount(10);
       axisY->setMinorTickCount(2);//4
       mChart->addAxis(axisY,Qt::AlignBottom);
       lineSeries->attachAxis(axisY);
 
       mChart->setTheme(QChart::ChartThemeDark);
       lineSeries->setColor(Qt::red);
 
       mChart->setTitle("qrand");
 
       chartView->setChart(mChart);
 
       chartView->resize(QSize(500,300));
 
       chartView->setRenderHints(QPainter::Antialiasing); 
       ui->horizontalLayout->addWidget(chartView);     
}

4.刷新QChart

//更新系列中的数据  注意:不需要将该系列从图表中移除
    lineSeries->clear();
    QList<QPointF> list;
    int count = cloud.points.size();
    std::cout << "new point s count : " << count << "  " << std::endl;
 
 
    for (int i = 0; i < count; i+=10)
    {
        list << QPointF(cloud.points[i].z, cloud.points[i].y);
    }
    lineSeries->replace(list);

5.PCL 点排序

    //------------------------------排序----------------------------
    std::sort(cloud.begin(), cloud.end(),
        [](pcl::PointXYZ a, pcl::PointXYZ b) {return a.z < b.z; });

到此这篇关于Qt QChart实现折线图的绘制的文章就介绍到这了,更多相关Qt QChart折线图内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

QtQChart实现折线图的绘制

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

QtQChart实现折线图的绘制

QChart是常用的图表,这篇文章主要为大家详细介绍了Qt如何利用QChart实现折线图的绘制,文中的示例代码讲解详细,感兴趣的可以了解一下
2023-05-17

WPF+ASP.NETSignalR实现动态折线图的绘制

这篇文章将以一个简单的动态折线图示例,简述如何通过ASP.NETSignalR实现后台通知功能,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
2023-01-03

Python+Matplotlib实现绘制三维折线图

立体图视觉上层次分明色彩鲜艳,具有很强的视觉冲击力,让观看的人驻景时间长,留下深刻的印象。今天我们就通过这篇文章来了解如何用python中的matplotlib库绘制漂亮的三维折线图吧
2023-03-21

Vue+Echarts实现绘制动态折线图

这篇文章主要为大家详细介绍了如何利用Vue和Echarts实现绘制动态折线图,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
2023-03-19

D3.js实现绘制折线图的教程详解

这篇文章主要为大家详细介绍了如何通过D3.js实现绘制折线图,文中的示例代码讲解详细,对我们学习D3.js有一定的帮助,需要的可以参考一下
2022-11-13

python怎么绘制折线图

在Python中,可以使用Matplotlib库来绘制折线图。下面是一个简单的示例:```pythonimport matplotlib.pyplot as plt# 准备数据x = [1, 2, 3, 4, 5]y = [2, 4, 6,
2023-08-19

Python pyecharts怎么绘制折线图

这篇文章主要介绍“Python pyecharts怎么绘制折线图”,在日常操作中,相信很多人在Python pyecharts怎么绘制折线图问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python pyec
2023-06-29

Python如何绘制Matplotlib折线图

本篇内容介绍了“Python如何绘制Matplotlib折线图”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、Matplotlib 绘图在
2023-06-30

Android怎么绘制双折线图

本篇内容主要讲解“Android怎么绘制双折线图”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Android怎么绘制双折线图”吧!自定义View实现双折线图,可点击,点击后带标签描述,暂未实现拖
2023-06-29

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录