Qt 有许多模块,如 Core、GUI、Widgets、WebEngine、QML等。其中 Charts 模块,包含了一系列有关图表的组件,使用的是 Qt 的 Graphics View 框架,该模块以前只在商业版中才有。

从 Qt 5.7 开始,该模块通过 GPLv3 许可,已经对 Qt 开源版开放使用。

1  饼图 (pie chart)

1.1  Charts 模块

.pro 中添加如下语句:

QT  += charts

头文件和命名空间

#include <QtCharts>using namespace QtCharts;

1.2  代码示例

1) 头文件

Qt  中实现饼图的例程,主要使用了 QPieSeries + QPieSlice + QChart + QChartView 这四个类,如下所示: #1 ~ #5 声明了头文件

1 #include <QtWidgets/QApplication>
2 #include <QtWidgets/QMainWindow>
3 #include <QtCharts/QChartView>
4 #include <QtCharts/QPieSeries>
5 #include <QtCharts/QPieSlice>
6
7 using namespace QtCharts;

实际上也可用两个头文件代替:

#include <QtWidgets>
#include <QtCharts>

2) QPieSeries 类

#13 ~ #16 新建 QPieSeries 类指针,并将其分为三份,各占 10%,20% 和 70%;#17 设置标签属性,使其可见;

 9 int main(int argc, char *argv[])
10 {
11     QApplication a(argc, argv);
12
13     QPieSeries *series = new QPieSeries();
14     series->append("10%", 1);
15     series->append("20%", 2);
16     series->append("70%", 7);
17     series->setLabelsVisible();

3) QPieSlice 类

#19 ~ #24 使用 QPieSlice 设置每一份的颜色,分别为:红、绿、蓝;

19     QPieSlice *slice_red = series->slices().at(0);
20     QPieSlice *slice_green = series->slices().at(1);
21     QPieSlice *slice_blue = series->slices().at(2);
22     slice_red->setColor(QColor(255,0,0,255));
23     slice_green->setColor(QColor(0,255,0,255));
24     slice_blue->setColor(QColor(0,0,255,255));

4) QChart  和 QChartView

#26 ~ #29 新建 QChart 类指针,并将 series 添加到 chart 中,然后设置标题和隐藏图例;

#31 ~ #32 新建 QChartView 类指针,然后将 chart 添加到 chartview 中,设置其渲染属性为 “抗混叠” (QPainter::Antialiasing);

#34 ~ #37 新建 QMainWindow 类对象,并将 chartview 置于中间 (setCentralWidget() 函数),然后重设其大小,并 show() 出来。

26     QChart *chart = new QChart();
27     chart->addSeries(series);
28     chart->setTitle("PieChart Example");
29     chart->legend()->hide();
30
31     QChartView *chartview = new QChartView(chart);
32     chartview->setRenderHint(QPainter::Antialiasing);
33
34     QMainWindow window;
35     window.setCentralWidget(chartview);
36     window.resize(480, 360);
37     window.show();
38
39     return a.exec();
40 }

输出如下:

2  圆环图 (donut chart)

  #4 用的是 Qt 中的命名空间声明,等效于 using namespace QtCharts

  圆环图中间有空,对应 #11,设置了中间孔的尺寸大小;另外,#21 设置了圆环图的显示主题,#22 设置的是图例的字体;其它代码,饼图的大同小异。

 1 #include <QtWidgets>2 #include <QtCharts>3 4 QT_CHARTS_USE_NAMESPACE5 6 int main(int argc, char *argv[])7 {8     QApplication a(argc, argv);9
10     QPieSeries *series = new QPieSeries();
11     series->setHoleSize(0.35);
12     series->append("Protein 4.2%", 4.2);
13     series->append("Carbs 56.4%", 56.4);
14     series->append("Other 23.8%", 23.8);
15
16     QChartView *chartView = new QChartView();
17     chartView->setRenderHint(QPainter::Antialiasing);
18     chartView->chart()->setTitle("DonutChart Example");
19     chartView->chart()->addSeries(series);
20     chartView->chart()->legend()->setAlignment(Qt::AlignBottom);
21     chartView->chart()->setTheme(QChart::ChartThemeBlueCerulean);
22     chartView->chart()->legend()->setFont(QFont("Arial", 7));
23
24     QMainWindow window;
25     window.setCentralWidget(chartView);
26     window.resize(400, 300);
27     window.show();
28
29     return a.exec();
30 }

输出界面如下:

Qt-绘制圆饼图等-转摘相关推荐

  1. qt绘制一圈圆_Qt绘制圆

    最近开始折腾Qt了,手头上的一个项目需要用到Qt来绘制一些简单图像. 记录下Qt绘制圆的过程: 对于以A为圆心,半径为R的圆,外部有一个外切的正方形,正方形上有B点.如下图所示: 对于void QPa ...

  2. QT绘制嵌套的圆饼状图

    QT绘制嵌套的圆饼状图 项目简介 项目技术 项目展示 主要源码片段解析 获取完整项目源码传送门 项目简介 使用QPieSeries API创建嵌套的甜甜圈图. 项目技术 qt5.12,qt chart ...

  3. QT绘制具有向下钻取效果的园饼图

    QT绘制具有向下钻取效果的园饼图 项目简介 项目技术 项目展示 主要源码片段解析 获取完整项目源码传送门 项目简介 实现具有向下钻取效果的饼图. 项目技术 qt5.12,qt charts模块,C++ ...

  4. QT绘制饼图和自定义饼图切片

    QT绘制饼图和自定义饼图切片 项目简介 项目技术 项目展示 主要源码片段解析 获取完整项目源码传送门 项目简介 创建一个简单的饼图以及如何对饼图切片进行一些自定义. 项目技术 qt5.12,qt ch ...

  5. 【原创】QT 绘制饼图,曲线图,柱状图,详解。

    用QT绘制数据图表.刚开始感觉不知如何下手,在参考了网上的文章后(部分代码来自网上),现学现卖,把饼图,曲线图,柱状图全部做到一起了.不啰嗦,上图!!! QT 是面向对象的编程语言, 图形库的用法比较 ...

  6. Qt绘制直线、矩形、圆

    Qt绘制直线.矩形.圆 新建一个Qt Widgets Application工程 添加头文件 #include <QPainter> 添加paintEvent函数,代码如下: void M ...

  7. 使用Pillow绘制圆、矩形、饼图、圆弧以及绘制文字

    导读 Pillow是Python中一个常用的图像处理库,这篇文章我们就来介绍一下如何通过Pillow来实现在图片上绘制各种图像以及文字. 安装 pip install Pillow 绘制文字 下载字体 ...

  8. python绘制饼图双层_有趣!如何用Python-matplotlib绘制双层饼图及环形图?

    (1) 饼图(pie),即在一个圆圈内分成几块,显示不同数据系列的占比大小,这也是我们在日常数据的图形展示中最常用的图形之一. 在python中常用matplotlib的pie来绘制,基本命令如下所示 ...

  9. 在DataGridView控件中一次显示出多个圆饼图的原始程序代码

    之前我们曾经提到过,您可以在Windows Form窗体上的一个DataGridView控件中一次显示出多个圆饼图(或其它形式的统计图表)以便能够一次检视多个群组数据的比例情况(如图表1所示).当时并 ...

最新文章

  1. 剑指Offer_编程题_22
  2. Windows7中启动Mysql服务时提示:拒绝访问的一种解决方式
  3. 并查集【CF731C】Socks
  4. SpringBoot是如何解析参数的
  5. Java每天学习一点点 09.10.13
  6. 医学实验室质量和能力认可准则在实验室信息系统的应用说明CNAS-CL35
  7. 贺利坚老师汇编课程29笔记:在代码段使用栈将程序定义的数据逆序
  8. 20165320 第六周学习总结
  9. ios开发收藏按钮_即刻APP收藏按钮的实现
  10. 微信小程序(三)自定义分享按钮和原生分享区分不同按钮的分享带参数分享和获取
  11. OPENMP学习笔记(1)——简介,模型,运行
  12. 密码学0930大作业
  13. mysql特殊符号无法储存_解决MYSQL数据库无法保存emoji表情及特殊符号问题
  14. IntelliJ IDEA查看类层次结构图
  15. Bilibili视频爬虫
  16. Google英文SEO优化更注重实效性
  17. 单摆matlab建模,用matlab求解单摆模型
  18. [陇剑杯2021] 复现
  19. 区块链最强招聘会来袭,毕业就拿百万年薪!
  20. 在eclipse中导入jor(开源报表)工程

热门文章

  1. 考研复试——通信原理专业课问答
  2. 基于Springboot+Vue的电子购物商城设计
  3. 让客户在微信上查看订单详情,【单据分享】让你省心又省力!
  4. cad展点插件lisp使用_单曲线坐标计算并展点用CAD_lisp函数
  5. jzoj 6798. 【2014广州市选day2】regions
  6. iOS 基于CTMediator的组件化方案
  7. 平面一般方程的3D旋转平移变换
  8. 还在为多维度数据分析烦恼?我来教你一招摆平!
  9. 深扒,用 6 部分讲完 Java 性能调优:多线程 + 设计模式 + 数据库
  10. 用python写一个基于直方图比图的代码