QT学习 之 三维饼图绘制
QT里没有相应统计图形的绘制组件
只有手工自己画
效果如图
void aaq::paintEvent( QPaintEvent* ev )
{
QPainter painter(this);
// 去除画笔
painter.setPen(Qt::NoPen);
// 设置反锯齿
painter.setRenderHint(QPainter::Antialiasing); //******************************************** 圆饼图 *****************************************//
if()
{
// 顶层圆面
QRectF rect_top(10.0, 20.0, 280.0, 160.0);
// 底层圆面
QRectF rect_bottom(10.0, 60.0, 280.0, 160.0);
// 中间矩形
QRectF rect_midd(10.0, 100.0, 280.0, 40.0); // 扇形起始角度
int startAngle = * ;
// 扇形覆盖范围
int spanAngle = * ; painter.setBrush(QColor(,,,));
// 绘制底层圆面
painter.drawEllipse(rect_bottom);
// 绘制中间矩形
painter.drawRect(rect_midd); painter.setBrush(QColor(Qt::darkYellow));
// 绘制底层扇形
painter.drawPie(rect_bottom, startAngle, spanAngle); // 扇形的弦与弧的交点
double pi = 3.1415926;
double dx1 = rect_top.width() * 0.5 * cos( * pi / );
double dy1 = rect_top.height() * 0.5 * sin( * pi / ); double dx2 = rect_top.width() * 0.5 * cos( * pi / );
double dy2 = rect_top.height() * 0.5 * sin( * pi / ); // 求交点的坐标值
QPointF posBackCenter = QPointF(rect_top.center());
double dX1 = posBackCenter.x() + dx1 + 0.5;
double dY1 = posBackCenter.y() - dy1 + 0.5; double dX2 = posBackCenter.x() + dx2 + 0.5;
double dY2 = posBackCenter.y() - dy2 + 0.5; // 记录交点
QPointF topLeft = QPointF(dX1, dY1);
QPointF bottomRight = QPointF(dX2, dY2) + QPointF(,);
QPointF bottomLeft = topLeft + QPointF(,);
painter.setBrush(QColor(Qt::darkYellow)); // 绘制连接扇形的区域
QPolygonF path;
path << topLeft << QPointF(dX2,dY2) << bottomRight << bottomLeft;
painter.drawPolygon(path); // 绘制顶层圆面
painter.setBrush(QColor(,,,));
painter.drawEllipse(rect_top); // 绘制顶层扇形
painter.setBrush(QColor(Qt::yellow));
painter.drawPie(rect_top, startAngle, spanAngle);
} QWidget::paintEvent(ev);
}
http://blog.csdn.net/u013007900/article/details/50058837
QT学习 之 三维饼图绘制的更多相关文章
- Qt 学习之路:绘制设备
绘图设备是继承QPainterDevice的类.QPaintDevice就是能够进行绘制的类,也就是说,QPainter可以在任何QPaintDevice的子类上进行绘制.现在,Qt 提供了若干这样的 ...
- Matlab学习笔记(一)—— 三维图形绘制
这学期公选课选的是MATLAB,所以准备把这学期所学习的整理到博客上,作为记录,哇咔咔~ 一.三维函数图: x=cos(t), y=sin(t), z=t %≤t ≤*pi t=:*pi; %t的取值 ...
- Qt 学习之路 2(29):绘制设备
Qt 学习之路 2(29):绘制设备 豆子 2012年12月3日 Qt 学习之路 2 28条评论 绘图设备是继承QPainterDevice的类.QPaintDevice就是能够进行绘制的类,也就是说 ...
- Qt 学习之路 2(24):Qt 绘制系统简介
Qt 学习之路 2(24):Qt 绘制系统简介 豆子 2012年10月30日 Qt 学习之路 2 77条评论 Qt 的绘图系统允许使用相同的 API 在屏幕和其它打印设备上进行绘制.整个绘图系统基于Q ...
- QT学习教程
原地址:http://www.devbean.NET/2012/08/qt-study-road-2-catelog/ 网上看到的不错的教程 本教程以qt5为主,部分地方会涉及qt4.据说非常适合qt ...
- Qt 学习之路 2(72):线程和事件循环
Qt 学习之路 2(72):线程和事件循环 <理解不清晰,不透彻> -- 有需求的话还需要进行专题学习 豆子 2013年11月24日 Qt 学习之路 2 34条评论 前面一章我 ...
- Qt 学习之路 2(46):视图和委托
Home / Qt 学习之路 2 / Qt 学习之路 2(46):视图和委托 Qt 学习之路 2(46):视图和委托 豆子 2013年3月11日 Qt 学习之路 2 63条评论 前面我们介绍了 ...
- Qt 学习之路 2(41):model/view 架构
Qt 学习之路 2(41):model/view 架构 豆子 2013年1月23日 Qt 学习之路 2 50条评论 有时,我们的系统需要显示大量数据,比如从数据库中读取数据,以自己的方式显示在自己的应 ...
- Qt 学习之路 2(33):贪吃蛇游戏(3)
Qt 学习之路 2(33):贪吃蛇游戏(3) 豆子 2012年12月29日 Qt 学习之路 2 16条评论 继续前面一章的内容.上次我们讲完了有关蛇的静态部分,也就是绘制部分.现在,我们开始添加游戏控 ...
随机推荐
- C++中++运算符的重载
void showTime() const; Clock& operator ++(); Clock operator ++(int); private: int hour,minute,se ...
- JavaScript 运动框架 Step by step
http://blog.csdn.net/rsj217/article/details/7986905 关于offsetLeft:http://www.cnblogs.com/JackJiang/ar ...
- JAVA中把ResultSet转换成LIST
项目中老是遇到数据库异常关闭的情况,真烦, 想用hibernate呢,那个玩意儿又太笨重,感慨C#和PHP的舒适方便性,模拟TP写了个数据处理层,将就用着先代码里有很多项目中的东西,不要直接COPY了 ...
- JS的单例模式
维基百科对单例模式的介绍如下: 在应用单例模式时,生成单例的类必须保证只有一个实例的存在,很多时候整个系统只需要拥有一个全局对象,才有利于协调系统整体的行为.比如在整个系统的配置文件中,配置数据有一个 ...
- java 写文件解析
import java.io.File; import java.io.FileOutputStream; import java.io.*; public class FileTest { publ ...
- fiddler---使用方法1--抓取手机app包
1.首先fiddler设置
- 批量 GBK 转 UTF8 java
package encoding; import java.io.File; import java.io.IOException; import java.util.Collection; impo ...
- MVC-Easy-UI-datagrid-分页-查询
时间仓促,代码写的乱,莫怪,着影区不用理会(功能之外) <link href="@Url.Content("~/Content/Site.css")" r ...
- 怎么给没链接的flash加超链接
最近开始准备设计一个广告条,本想用阿里妈妈的的banner marker来设计,却遗憾的发现,banner marker已经实行收费模式了. 我不得不启用另一款在线banner生成工具,百度旗下的&q ...
- 手机SIM卡介绍 三类不同标准的SIM卡
SIM卡的全称是Subscriber Identity Module,翻译过来也叫客户识别模块,也叫做智能卡.用户身份识别卡.这块小小的芯片可以存储用户的号码.信息,以及一定数量的联系人数据,配合我们 ...