Qt QChart 创建图表
Qt QChart 创建图表
@
效果

流程
q(value 数据)
q-->s1(QPieSlice)-->ps(QPieSeries)--饼状图-->c(QChart)-->v(QChartView)-->w(QWidget)
q-->s2(...)-->ps
q-->bs(QBarSet)-->b(QBarSeries)--柱状图-->c
q-->bs1(...)-->b
q-->p(QPointF)-->l(QLineSeries/QSplineSeries)--折/曲线图-->c
q-->p1(...)-->l
l1(QLineSeries upper)-->a(QAreaSeries)--区域图-->c
l2(QLineSeries lower)-->a
代码
1. 饼图
// 保存多个扇形
QList<QPieSlice *> slices;
for (int i = 1; i <= 10; ++i)
{
// 创建一个扇形
QPieSlice * slice = new QPieSlice(QString::number(i),i);
slices << slice;
}
// 创建一个饼图系列
QPieSeries * pieSeries = new QPieSeries;
// 当鼠标悬浮时设置标签可见,设置饼图扇形分离
QObject::connect(pieSeries,&QPieSeries::hovered
, [](QPieSlice *slice, bool state) {
slice->setLabelVisible(state);
slice->setExploded(state);
});
// 将所有扇形所加到饼图中
pieSeries->append(slices);
// 创建一个图表
QChart * chart = new QChart;
// 设置标题
chart->setTitle(QStringLiteral("饼图"));
// 设置动画
chart->setAnimationOptions(QChart::AllAnimations);
// 设置图表的系列
chart->addSeries(pieSeries);
// 创建图表视图,显示图表
pView = new QChartView(chart);
// 设置抗锯齿
pView->setRenderHint(QPainter::Antialiasing);
// 添加图表视图到布局
QVBoxLayout *layout = new QVBoxLayout(this);
layout->addWidget(pView);
2. 柱图
// 保存柱集合
QList<QBarSet *> sets;
for (int i = 1; i <= 5; ++i)
{
// 创建一个柱集合
QBarSet * set = new QBarSet(QString("set").append(QString::number(i)));
QList<qreal> values;
for (int j = 1; j <= 5; ++j)
{
values << qrand()%100;
qDebug() << values;
}
set->append(values);
sets << set;
}
// 创建一个柱图系列
QBarSeries * barSeries = new QBarSeries;
// 添加柱集合
barSeries->append(sets);
QChart * chart = new QChart;
chart->setTitle(QStringLiteral("柱状图"));
chart->setAnimationOptions(QChart::AllAnimations);
chart->addSeries(barSeries);
pView = new QChartView(chart);
pView->setRenderHint(QPainter::Antialiasing);
QVBoxLayout *layout = new QVBoxLayout(this);
layout->addWidget(pView);
3. 折/曲线图
// 创建并保存点信息
QList<QPointF> points;
points << QPointF(0, -1) << QPointF(2, 2) << QPointF(3, 5) << QPointF(5, -5)
<< QPointF(6, 0) << QPointF(7, 3);
// 创建线图系列
QLineSeries * lineSeries = new QLineSeries;
// 曲线
//QSplineSeries * lineSeries = new QSplineSeries;
// 追加点
lineSeries->append(points);
QChart * chart = new QChart;
chart->setTitle(QStringLiteral("线图"));
chart->setAnimationOptions(QChart::AllAnimations);
chart->addSeries(lineSeries);
pView = new QChartView(chart);
pView->setRenderHint(QPainter::Antialiasing);
QVBoxLayout *layout = new QVBoxLayout(this);
layout->addWidget(pView);
4. 区域图
QList<QPointF> pointsLower;
pointsLower << QPointF(0, -1) << QPointF(2, 2) << QPointF(3, 5) << QPointF(5, -5)
<< QPointF(6, 0) << QPointF(7, 3);
// 创建一条线
QLineSeries * lineSeriesLower = new QLineSeries;
lineSeriesLower->append(pointsLower);
QList<QPointF> pointsUpper;
pointsUpper << QPointF(0, -1) << QPointF(2, 4) << QPointF(3, 3) << QPointF(5, 3)
<< QPointF(6, 1) << QPointF(7, 5);
// 创建另一条线
QLineSeries * lineSeriesUpper = new QLineSeries;
lineSeriesUpper->append(pointsUpper);
// 两条线组成面
QAreaSeries * areaSeries = new QAreaSeries(lineSeriesLower, lineSeriesUpper);
QChart * chart = new QChart;
chart->setTitle(QStringLiteral("区域图"));
chart->setAnimationOptions(QChart::AllAnimations);
chart->addSeries(areaSeries);
pView = new QChartView(chart);
pView->setRenderHint(QPainter::Antialiasing);
QVBoxLayout *layout = new QVBoxLayout(this);
layout->addWidget(pView);
Qt QChart 创建图表的更多相关文章
- C/C++ QT QChart 绘制组件应用
QtCharts 组件是QT中提供图表绘制的模块,该模块可以方便的绘制常规图形,Qtcharts 组件基于GraphicsView模式实现,其核心是QChartView和QChart的二次封装版. 在 ...
- python使用VBA:Excel创建图表(转)
# -*- coding: utf-8 -*- """ Created on Thu Mar 06 11:22:03 2014 @author: Administrato ...
- Vue 爬坑之路(八)—— 使用 Echarts 创建图表
在后台管理系统中,图表是一个很普遍的元素.目前常用的图标插件有 charts, Echarts, highcharts.这次将介绍 Echarts 在 Vue 项目中的应用. 一.安装插件 使用 c ...
- C# 在PPT幻灯片中创建图表
图表能够很直观的表现数据在某个时间段的变化趋势,或者呈现数据的整体和局部之间的相互关系,相较于大篇幅的文本数据,图表更增加了我们分析数据时选择的多样性,是我们挖掘数据背后潜在价值的一种更为有效地方式. ...
- Vue怎么使用Echarts创建图表
摘要:在后台管理系统中,我们经常会遇到图表,比如说:柱形图,饼状图,折线图,雷达图等等,而用来写图表插件有很多,我这里主要介绍Echarts在项目里怎么使用,官网地址如下:https://echart ...
- PyQt5 - 01 使用qt creator创建第一个pyqt5界面程序
1. 安装Qt Creator qt creator下载点我 2. 利用Qt Creator创建界面 点击文件 -> 新建文件或项目 选择Qt -> Qt设计师界面类 选择一个模版,创建一 ...
- 如何在Qt Creator 创建一个.pri文件
如何在Qt Creator 创建一个.pri文件 2013年10月09日 ⁄ 综合 ⁄ 共 254字 ⁄ 字号 小 中 大 ⁄ 评论关闭 这个问题很少人写,因为比较简单,但是让却让我花了好大功夫才 ...
- 用qt creator创建可继承ui类
https://jingyan.baidu.com/article/5d368d1efa2dd73f60c05786.html 用qt creator创建可继承ui类 听语音 | 浏览:1657 | ...
- Unity可视化数据:创建图表
本文由Aoi翻译,转载请注明出处.文章来自于catlikecoding,原文作者介绍了Unity制作图表.可视化数据的方法.更多的名词解释内容,请点击末尾的“原文链接”查看. 介绍 这个教程里,我 ...
随机推荐
- 吉他自学用Guitar Pro好不好?
很多人心中都有一个吉他梦,可苦于没有坚持下来.其实一个人自学吉他过程是非常枯燥的.经常手上被磨得都是茧,但是也不清楚自己弹的到底对不对. 如果不跟着老师练习,那很有可能就走了歪路或者是无法长期坚持.所 ...
- 怎么用思维导图软件iMindMap整理发文思路
如果你是一个普通的博客作者,那么你就应该明白在枯竭时寻找灵感就像是一场噩梦,即使你有一千个想法,但是你无法将它们关联起来也是无用的,所以,为什么不试试iMindMap思维导图呢,尝试创新,进行组建,你 ...
- MathType在AutoCAD中的应用方法
我们都知道CAD是一款鼎鼎有名设计与绘图软件,有不少朋友可能用过或听说过CAD,相较而言,用过MathType的人可能要少一些,虽然它也是理科生与工科生的专用工具之一. 通过MathType我们能够在 ...
- Boom 3D支持的音乐都有什么格式
Boom 3D作为一款专业的3D环绕音效软件,支持多种音频.视频播放格式,除了常用的MP3.WMA.WAV音频格式外,Boom 3D还支持FLAC.AAC这些比较高级的音频格式.同时,Boom 3D还 ...
- 【VUE】8.VUEX核心概念
1. Vuex核心概念主要如下 state : 存储共享数据 mutation: 变更store中的数据,方法,不能异步操作 action: 异步操作,通过触发mutation变更数据 getter: ...
- SQL相关子查询是什么?和嵌套子查询有什么区别?
目录 两者的各种叫法 相关子查询MySQL解释 相关子查询Wikipedia解释 相关子查询执行步骤拆解 相关子查询和嵌套查询的区别 参考资料 两者的各种叫法 相关子查询叫做:Correlated S ...
- pytest的setup和teardown
学过unittest的setup和teardown,前置和后置执行功能.pytest也有此功能并且功能更强大,今天就来学习一下吧. 用例运行级别: 模块级(setup_module/teardown_ ...
- 记一次用python 的ConfigParser读取配置文件编码报错
记一次用python 的ConfigParser读取配置文件编码报错 ...... raise MissingSectionHeaderError(fpname, lineno, line)Confi ...
- Qt实现客户端与服务器消息发送与文件传输
Qt实现客户端与服务器消息发送与文件传输需要使用到 QTcpSocket:提供套接字QTcpServer:提供基于TCP的服务端,官方文档的解释如下: This class makes it poss ...
- ASP.Net Core 3.1 使用gRPC入门指南
主要参考文章微软官方文档: https://docs.microsoft.com/zh-cn/aspnet/core/grpc/client?view=aspnetcore-3.1 此外还参考了文章 ...