1  简介

使用Qt的charts模块来绘制图表,案例来自Qt自带的demo。

charts模块简介:Qt Chars模块提供了一系列容易使用的图表组件。需要使用charts组件时,需要导入Qt Charts模块,通过如下方式:QT += charts

在安装Qt Creator的时候,需要勾选上这个模块,不然是不能使用的。

2  Qt Charts总览

Qt Chars支持绘制:坐标图、柱状图、折线图、饼图、曲线图、散点图等。

3  测试及说明

首先创建一个工程,继承至MainWindow组件。

(1)绘制折线图

折线图通过线段展示一系列相关联的点。

使用的类:QLineSeries

测试代码:

 MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this); /*
* LineChart Example
*/
//添加一个QLineSeries实例
QLineSeries *lineseries = new QLineSeries();
//添加数据(点),有两种方式
lineseries->append(, ); //参数分别为横纵坐标
lineseries->append(, );
lineseries->append(, );
lineseries->append(, );
*lineseries << QPointF(, ) << QPointF(, ) << QPointF(, ) << QPointF(, ) << QPointF(, );
//添加一个QChart实例,为了展示数据
QChart *chart = new QChart();
chart->legend()->hide(); //隐藏图例
chart->addSeries(lineseries);
chart->createDefaultAxes();
chart->setTitle("Simple line chart example");
//添加一个QChartView图例
QChartView *chartView = new QChartView(chart);
chartView->setRenderHint(QPainter::Antialiasing); //呈现方式
//显示
this->setCentralWidget(chartView);
this->setCentralWidget(chartView);
this->resize(, );
this->show();
}

运行测试:

(2)绘制曲线图

使用的类:QSplineSeries

测试代码:

     QSplineSeries *series = new QSplineSeries();
series->setName("spline");
series->append(, );
series->append(, );
series->append(, );
series->append(, );
series->append(, ); QChart *chart = new QChart();
chart->legend()->hide();
chart->addSeries(series);
chart->setTitle("Simple spline chart example");
chart->createDefaultAxes();
chart->axisY()->setRange(, ); QChartView *chartView = new QChartView(chart);
chartView->setRenderHint(QPainter::Antialiasing); this->setCentralWidget(chartView);
this->setCentralWidget(chartView);
this->resize(, );
this->show();

运行测试:

(3)绘制面积图

使用的类:LineChart

测试代码:

     QLineSeries *series0 = new QLineSeries();
QLineSeries *series1 = new QLineSeries();
*series0 << QPointF(, ) << QPointF(, ) << QPointF(, ) << QPointF(, ) << QPointF(, )
<< QPointF(, ) << QPointF(, );
*series1 << QPointF(, ) << QPointF(, ) << QPointF(, ) << QPointF(, ) << QPointF(, )
<< QPointF(, ) << QPointF(, ); QAreaSeries *series = new QAreaSeries(series0, series1);
series->setName("Batman");
QPen pen(0x059605);
pen.setWidth();
series->setPen(pen); QChart *chart = new QChart();
chart->addSeries(series);
chart->setTitle("Simple areachart example");
chart->createDefaultAxes();
chart->axisX()->setRange(, );
chart->axisY()->setRange(, ); QChartView *chartView = new QChartView(chart);
chartView->setRenderHint(QPainter::Antialiasing); this->setCentralWidget(chartView);
this->setCentralWidget(chartView);
this->resize(, );
this->show();

运行测试:

(4)绘制散点图

使用的类: QScatterSeries

测试代码:

     QScatterSeries *series0 = new QScatterSeries();
series0->setName("scatter1");
series0->setMarkerShape(QScatterSeries::MarkerShapeCircle);
series0->setMarkerSize(5.0); QScatterSeries *series1 = new QScatterSeries();
series1->setName("scatter2");
series1->setMarkerShape(QScatterSeries::MarkerShapeRectangle);
series1->setMarkerSize(10.0); QScatterSeries *series2 = new QScatterSeries();
series2->setName("scatter3");
series2->setMarkerShape(QScatterSeries::MarkerShapeRectangle);
series2->setMarkerSize(15.0); series0->append(, );
series0->append(, );
series0->append(, );
series0->append(, );
series0->append(, );
*series1 << QPointF(, ) << QPointF(, ) << QPointF(, ) << QPointF(, ) << QPointF(, );
*series2 << QPointF(, ) << QPointF(, ) << QPointF(, ) << QPointF(, ); QChart *chart = new QChart();
chart->addSeries(series0);
chart->addSeries(series1);
chart->addSeries(series2);
chart->setTitle("Simple scatterchart example");
chart->createDefaultAxes();
chart->setDropShadowEnabled(false); QChartView *chartView = new QChartView(chart);
chartView->setRenderHint(QPainter::Antialiasing); this->setCentralWidget(chartView);
this->resize(, );
this->show();

运行测试:

(5)绘制柱状图

使用的类:

测试代码:

     QBarSet *set0 = new QBarSet("Jane");
QBarSet *set1 = new QBarSet("John");
QBarSet *set2 = new QBarSet("Axel");
QBarSet *set3 = new QBarSet("Mary");
QBarSet *set4 = new QBarSet("Samantha"); *set0 << << << << << << ;
*set1 << << << << << << ;
*set2 << << << << << << ;
*set3 << << << << << << ;
*set4 << << << << << << ; QBarSeries *series = new QBarSeries();
series->append(set0);
series->append(set1);
series->append(set2);
series->append(set3);
series->append(set4); QChart *chart = new QChart();
chart->addSeries(series);
chart->setTitle("Simple barchart example");
chart->setAnimationOptions(QChart::SeriesAnimations); QStringList categories;
categories << "Jan" << "Feb" << "Mar" << "Apr" << "May" << "Jun";
QBarCategoryAxis *axis = new QBarCategoryAxis();
axis->append(categories);
chart->createDefaultAxes();
chart->setAxisX(axis, series); chart->legend()->setVisible(true);
chart->legend()->setAlignment(Qt::AlignBottom); QChartView *chartView = new QChartView(chart);
chartView->setRenderHint(QPainter::Antialiasing); this->setCentralWidget(chartView);
this->resize(, );
this->show();

运行测试:

 (6)绘制饼图

使用的类:QPieSeries

测试代码:

     QPieSeries *series = new QPieSeries();
series->append("Jane", );
series->append("Joe", );
series->append("Andy", );
series->append("Barbara", );
series->append("Axel", ); QPieSlice *slice = series->slices().at();
slice->setExploded();
slice->setLabelVisible();
slice->setPen(QPen(Qt::darkGreen, ));
slice->setBrush(Qt::green); QChart *chart = new QChart();
chart->addSeries(series);
chart->setTitle("Simple piechart example");
chart->legend()->hide(); QChartView *chartView = new QChartView(chart);
chartView->setRenderHint(QPainter::Antialiasing); this->setCentralWidget(chartView);
this->resize(, );
this->show();

运行测试:

Qt-绘制图表的更多相关文章

  1. Qt 绘制图表 - Qt Charts版

    一.前言 自从 Qt 发布以来,给广大跨平台界面研发人员带来了无数的福利.但是Qt自己却一直没有提供自带的图表库,这就使得 QWT.QCustomPlot 等第三方图表库有了巨大的生存空间,为了降低开 ...

  2. QCustomplot使用分享(九) 绘制图表-多功能游标

    目录 一.概述 二.效果图 三.源码讲解 1.源码结构 2.头文件 3.添加游标 4.监测移动 5.移动游标 6.其他函数 四.测试方式 1.测试工程 2.测试文件 3.测试代码 五.相关文章 六.总 ...

  3. 使用D3绘制图表(7)--饼状图

    这次是绘制饼状图,也是这一次使用D3绘制图表的最后一篇,大家可以从其他地方深入学习D3绘制图表,也可以直接查看D3的API进行学习,本次绘制饼状图的数据跟之前的卸载数组里面的不一样,这一次是使用d3的 ...

  4. 网页绘制图表 Google Charts with JavaScript #2 ....与ASP.NET网页结合 (ClientScriptManager.RegisterStartupScript 方法)

    此为文章备份,原文出处(我的网站) 网页绘制图表 Google Charts with JavaScript #2 ....与ASP.NET网页结合 (ClientScriptManager.Regi ...

  5. 网页绘制图表 Google Charts with JavaScript #1....好强、好简单啊!

    此为文章备份,原文出处(我的网站) 网页绘制图表 Google Charts with JavaScript....好强.好简单啊!#1 http://www.dotblogs.com.tw/mis2 ...

  6. DevExpress使用之ChartControl控件绘制图表(多坐标折线图、柱状图、饼状图)

    最近因为公司项目需要用到WinForm的DecExpress控件,在这里把一些使用方法总结一下. DevExpress中有一个专门用来绘制图表的插件ChartControl,可以绘制折线图.饼状图.柱 ...

  7. ZedGrap控件绘制图表曲线

    问题描述: 使用C#中ZedGrap控件绘制图表曲线图 ZedGrap 介绍说明:     安装ZedGrap控件 ZedGraph控件dll文件: 添加ZedGraph控件,首先在新建立的C#图像工 ...

  8. c#调用Excel绘制图表

    c#调用Excel需要引用命名空间 using Microsoft.Office.Interop.Excel; 由于该程序不复杂,主要是根据不同数据画表和图,画的图像也并不复杂,因为画图和画表的操作会 ...

  9. vue+echarts 动态绘制图表以及异步加载数据

    前言 背景:vue写的后台管理,需要将表格数据绘制成图表(折线图,柱状图),图表数据都是通过接口请求回来的. 安装 cnpm install echarts --s (我这里用了淘宝镜像,不知道同学自 ...

  10. Highcharts使用CSV格式数据绘制图表

    Highcharts使用CSV格式数据绘制图表 CSV(Comma-Separated Values,逗号分隔值文本格式)是採用逗号切割的纯文本数据.通常情况下.每一个数据之间使用逗号切割,几个相关数 ...

随机推荐

  1. 九、深度优先 && 广度优先

    原文地址 一.什么是"搜索"算法? 算法是作用于具体数据结构之上的,深度优先搜索算法和广度优先搜索算法都是基于"图"这种数据结构的. 因为图这种数据结构的表达能 ...

  2. 入门大数据---Hbase容灾与备份

    一.前言 本文主要介绍 Hbase 常用的三种简单的容灾备份方案,即CopyTable.Export/Import.Snapshot.分别介绍如下: 二.CopyTable 2.1 简介 CopyTa ...

  3. MFC 结束线程

    在wtl工程中定义一个现成,如下:DWORD WINAPI ThreadFunc( LPVOID pParam ){if( g_pMainlg )g_pMainlg->DoEnumNetwork ...

  4. Jquery的一些方法

    $.trim(str);说明:去掉字符串首尾空格.

  5. 深入理解letter-spacing,word-spacing的对比区别

    letter-spacing lletter-spacing 属性增加或减少字符间的空白(字符间距). 该属性定义了在文本字符框之间插入多少空间.由于字符字形通常比其字符框要窄,指定长度值时,会调整字 ...

  6. 「区间DP」「洛谷P3205」「 [HNOI2010]」合唱队

    洛谷P3205 [HNOI2010]合唱队 题目: 题目描述 为了在即将到来的晚会上有更好的演出效果,作为 A 合唱队负责人的小 A 需要将合唱队的人根据他们的身高排出一个队形.假定合唱队一共 n 个 ...

  7. ATM + 购物车项目

    ''' 存放配置文件 ''' import os #获取项目根目录 BASE_PATH=os.path.dirname(os.path.dirname(__file__)) #获取用户目录 USER_ ...

  8. day52 html进阶

    目录 一.分组与嵌套 二.伪类选择器 三.伪元素选择器 四.选择器优先级 五.css属性相关 1 字体属性 2 文字属性 3 背景图片 4 边框 5 display属性 6 盒子模型 7 浮动 一.分 ...

  9. day22 常用模块(上)

    一.时间模块 1 time模块 获取时间的三种格式: 第一种:time.time() 时间戳(timestamp):从1970年到现在的秒数 #应用场景:计算时间差 可以对时间加减,返回值为浮点型 p ...

  10. MYSQL 之 JDBC(六): 增删改查(四)利用反射及JDBC元数据编写通用的查询

    1.先利用SQL进行查询,得到结果集2.利用反射创建实体类的对象:创建Student对象3.获取结果集的列的别名:idCard.studentName4.再获取结果集的每一列的值,结合3得到一个Map ...