QT绘制饼图
QT版本:QT5.6.1
QT绘制饼图,出问题的代码如下
void DrawPieDialog::paintEvent(QPaintEvent *event)
{
float startAngle=0;
float spanAngle=( (qreal) (sell) / (qreal)(sell+last) ) *360;
QPoint startPt(30,30); //圆心
QRect rect(startPt.x(), startPt.y(), 200, 200);
QPainter p(this);
int arcR = rect.width()/2;
QPainterPath path;
p.setBrush(Qt::green);
path.moveTo(startPt.x() + arcR,startPt.y() + arcR); //移动到圆心
path.arcTo(rect,startAngle,spanAngle);
p.drawPath(path);
p.setBrush(Qt::red);
path.moveTo(startPt.x() + arcR,startPt.y() + arcR); //移动到圆心
startAngle=spanAngle;
spanAngle=360-startAngle;
path.arcTo(rect,startAngle,spanAngle);
p.drawPath(path);
QRect rect2(250,175,20,20);
QRect rect3(250,215,20,20); //为了绘制方块用的变量
//绘制方块
p.setBrush(Qt::green);
p.drawRect(rect2);
p.setBrush(Qt::red);
p.drawRect(rect3);
//绘制文字
p.drawText(QRectF(280,180,100,20),QString("已经销售的占比"));
p.drawText(QRectF(280,220,100,20),QString("未销售的占比"));
}
解决办法:
1 使用更高版本的QT版本
QT5.7以上版本支持QPieSeries + QPieSlice + QChart + QChartView等类,可以直接绘制饼图
2 修改代码如下
void DrawPieDialog::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
float startAngle=0;
float spanAngle=( (qreal) (sell) / (qreal)(sell+last) ) *360;
QPoint startPt(30,30); //圆心
QRect rect(startPt.x(), startPt.y(), 200, 200);
int arcR = rect.width()/2;
QList<QColor> colorList;
for(int i = 0; i < 2; i++)
{
//生成随机颜色并过滤掉白色
int colorR, colorG, colorB;
while (1)
{
colorR = rand() % 256;
colorG = rand() % 256;
colorB = rand() % 256;
if (colorR == 255 && colorG == 255 && colorB == 255)
{
continue;
}
else
{
break;
}
}
QColor color(colorR, colorG, colorB);
colorList.append(color);
painter.setBrush(QBrush(color));
//画扇形
QPainterPath path;
path.moveTo(startPt.x() + arcR,startPt.y() + arcR); //移动到圆心
if(i == 1)
{
startAngle=spanAngle;
spanAngle=360-spanAngle;
}
path.arcTo(rect, startAngle, spanAngle);
painter.drawPath(path);
} //end for
}
绘图光滑需要设置:
painter.setRenderHint(QPainter::Antialiasing, true);
效果图如下

3 修改代码如下
参考资料
1 Qt之饼图 https://www.cnblogs.com/xinxue/p/6021873.html
2 Qt4.8.5以上版本绘制饼图 https://blog.csdn.net/Pailugou/article/details/82080829
3 关于QT的QPainterPath::arcTo 详解 https://www.cnblogs.com/yuzhould/p/9132493.html
QT绘制饼图的更多相关文章
- Qt之自绘制饼图
1.说明 最近在搞绘图方面的工作,说实话C++的第三方绘图库并不算多,总之我了解的有:qtcharts.ChartDirector.qwt.kdchart和QCustomPlot.这几个库各有利弊. ...
- Html5绘制饼图统计图
这里要介绍的是一个jQuery插件:jquery.easysector.js Html5提供了强大的绘图API,让我们能够使用javascript轻松绘制各种图形.本文将主要讲解使用HTML5绘制饼图 ...
- PHP中用GD绘制饼图
PHP中用GD绘制饼图,绘制的类见代码: Class Chart{ private $image; // 定义图像 private $title; // 定义标题 private $ydata; // ...
- 【Highcharts】 绘制饼图和漏斗图
1.outModel类设计 设计outModel类首先研究下Highcharts中series的data数据格式,发现饼图和漏斗图都可以使用这样格式的数据 series: [{ name: 'Uniq ...
- 【带着canvas去流浪】 (3)绘制饼图
目录 一. 任务说明 二. 重点提示 三. 示例代码 四. hover高亮的实现思路 示例代码托管在:http://www.github.com/dashnowords/blogs 博客园地址:< ...
- Python使用Plotly绘图工具,绘制饼图
今天我们来学习一下如何使用Python的Plotly绘图工具,绘制饼图 使用Plotly绘制饼图的方法,我们需要使用graph_objs中的Pie函数 函数中最常用的两个属性values,用于赋值给需 ...
- HTML5绘制饼图示例(一)
原文地址:http://www.2cto.com/kf/201108/100251.html HTML5引入Canvas元素,用于图形的绘制,我们可以仅仅基于HTML和JavaScript就能绘制出原 ...
- R绘图 第八篇:绘制饼图(ggplot2)
geom_bar()函数不仅可以绘制条形图,还能绘制饼图,跟绘制条形图的区别是坐标系不同,绘制饼图使用的坐标系polar,并且设置theta="y": coord_polar(th ...
- c# 通过.net自带的chart控件绘制饼图pie chart
c# 通过.net自带的chart控件绘制饼图pie chart 需要实现的目标是: 1.将数据绑定到pie的后台数据中,自动生成饼图. 2.生成的饼图有详细文字的说明. 具体的实现步骤: > ...
随机推荐
- Prometheus监控学习笔记之prometheus的federation机制
0x00 概述 有时候对于一个公司,k8s集群或是所谓的caas只是整个技术体系的一部分,往往这个时候监控系统不仅仅要k8s集群以及k8s中部署的应用,而且要监控传统部署的项目.也就是说整个监控系统不 ...
- v-model指令实现简单的问卷表格
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&q ...
- dubbo rpc调用抛出的Exception处理
关于dubbo的Exception堆栈被吃处理,网上已经有比较多的解决方法,在我们的应用场景中,不希望RPC调用对方抛出业务exception,而是通过Resp中的errorCode,errorMsg ...
- 【题解】 Luogu P4312 / SP4155 [COCI 2009] OTOCI / 极地旅行社
原题地址:P4312 [COCI 2009] OTOCI / 极地旅行社/SP4155 OTOCI - OTOCI lct入门难度的题,十分弱智(小蒟蒻说lct是什么,能吃吗?) bridge操作判联 ...
- 05: greenlet:轻量级的并发编程
网络编程其他篇 1.1 greenlet简介 1.greenlet原理 & 使用 1. greenle间切换 1)一个 “greenlet” 是一个很小的独立微线程,可以把它想像成一个堆栈帧, ...
- c++中ifstream一次读取整个文件
转载:http://www.cnblogs.com/kex1n/p/4028428.html 第一种方法: 读取至std::string的情况: #include <string> #in ...
- kaptcha验证码实现,配合spring boot使用
一.kaptcha介绍 Kaptcha是谷歌放在github上的一个验证码jar包,我们可以简单配置属性实现验证码的验证功能. kaptcha参数设置如下所示: Constant 描述 默认值 kap ...
- (转)ElasticSearch学习
(二期)21.全文搜索引擎Elasticsearch [课程21]elasticsearch.xmind82.1KB [课程21]lucene.xmind0.8MB [课程21]基本用法....api ...
- Visual Studio Code配置Python开发环境
1.安装Python插件 在VScode界面按Crtl+Shift+P或者F1 输入ext install 直接安装Python,也就是点击它,然后等待,安装好后会提示你重启 2.配置运行Python ...
- p2596 书架(Treap)
写平衡树修锅快修到死系列 我太蠢了 其实是平衡树裸体裸题 插入,删除,交换前驱或后继,查询rank和kth 维护一个pos数组,表示第i个书的编号 然后注意许许多多的细节,没了 #include &l ...