1、红色圆环
代码部分

void MainWindow::paintEvent(QPaintEvent* event)
{QPainter painter(this);painter.save();//设置反锯齿painter.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform | QPainter::Qt4CompatiblePainting);QRect drawRect = event->rect();QRegion region(drawRect.adjusted(10,10,-10,-10),QRegion::Ellipse);drawRect.setSize(QSize(drawRect.width()/2,drawRect.height()/2));drawRect.moveTopLeft(QPoint((event->rect().width() - drawRect.width())/2,(event->rect().height() - drawRect.height())/2));QRegion region2(drawRect,QRegion::Ellipse);QPainterPath painterPath;painterPath.addRegion(region.subtracted(region2));painter.fillPath(painterPath,Qt::red);event->accept();painter.restore();
}


2

代码部分

void MainWindow::paintEvent(QPaintEvent *event)
{QPainter painter(this);painter.save();//设置反锯齿painter.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform| QPainter::Qt4CompatiblePainting);QRect drawRect = event->rect();QRegion region(drawRect.adjusted(8,8,-8,-8),QRegion::Ellipse);drawRect.setSize(QSize(drawRect.width()/2,drawRect.height()/2));drawRect.moveTopLeft(QPoint((event->rect().width() - drawRect.width())/2,(event->rect().height() - drawRect.height())/2));QRegion region2(drawRect,QRegion::Ellipse);painter.setClipRegion(region.subtracted(region2));painter.fillRect(region.boundingRect(),Qt::yellow);event->accept();painter.restore();}

3、在圆的中心画一个与背景颜色相同的园

代码:

void MainWindow::paintEvent(QPaintEvent *event)
{QPainter painter(this);painter.save();//设置反锯齿painter.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform | QPainter::Qt4CompatiblePainting);QRect drawRect = event->rect();painter.setBrush(Qt::yellow);painter.drawEllipse(drawRect.adjusted(10,10,-10,-10));painter.setBrush(painter.background());painter.drawEllipse(drawRect.adjusted(drawRect.width()/4,drawRect.height()/4,-drawRect.width()/4,-drawRect.height()/4));event->accept();painter.restore();
}

4、采用线型渐变,在中心位置到内环半径位置为透明,环部分为颜色值。这里的半径位置在线形渐变中用比例表示,这种只能画圆环,椭圆环不行


代码部分:

void MainWindow::paintEvent(QPaintEvent *event)
{QPainter painter(this);painter.save();//设置反锯齿painter.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform | QPainter::Qt4CompatiblePainting);QRect drawRect = event->rect();QRadialGradient rg(drawRect.center(),drawRect.width()/2,drawRect.center());rg.setColorAt(0,Qt::transparent);rg.setColorAt(0.6,Qt::transparent);rg.setColorAt(0.61,Qt::blue);rg.setColorAt(1,Qt::blue);painter.setBrush(rg);painter.drawEllipse(drawRect);event->accept();painter.restore();
}

5、画一个饼图,中间显示百分比

代码部分:

QPainter p(this);p.setRenderHint(QPainter::Antialiasing);int m_persent = 56;//绘制的环的比例int m_rotateAngle = 360*m_persent/100;int side = qMin(width(), height());QRectF outRect(0, 0, side, side);//矩形长宽为窗口的长宽QRectF inRect(20, 20, side-40, side-40);QString valueStr = QString("%1%").arg(QString::number(m_persent));//画外圆p.setPen(Qt::NoPen);p.setBrush(QBrush(QColor(97, 117, 118)));p.drawEllipse(outRect);//画内圆p.setBrush(QBrush(QColor(255, 107, 107)));p.drawPie(outRect, (90-m_rotateAngle)*16, m_rotateAngle*16);//画遮罩,遮罩颜色为窗口颜色p.setBrush(palette().window().color());p.drawEllipse(inRect);//画文字QFont f = QFont("Microsoft YaHei", 15, QFont::Bold);p.setFont(f);p.setFont(f);p.setPen(QColor("#555555"));p.drawText(inRect, Qt::AlignCenter, valueStr);

本文转载自:
https://blog.csdn.net/wanghualin033/article/details/78704274

Qt画环状图的几种简单方法相关推荐

  1. JS实现轮播图的三种简单方法。

    Js实现轮播图01 实现思路 这可能是轮播图最简单点的实现之一,通过更改图片的src来实现该效果,首先需要将图片命名格式统一比如pic01.jpg,pic02.jpg-,再通过js使用定时器去改变im ...

  2. 调优您的 LAMP 应用程序的 5 种简单方法

    John Mertic, 软件工程师, SugarCRM [url=]简介[/url] Wikipedia.Facebook 和 Yahoo! 等主要 web 属性使用 LAMP 架构来为每天数百万的 ...

  3. tableau货架图制作_举个栗子!Tableau技巧(33):实用漏斗图的三种制作方法

    漏斗图适用于业务流程比较规范.周期长.环节多的流程分析,通过漏斗各环节业务数据的比较,能够直观地发现和说明问题所在. 零售电商行业的用户提出分析需求:访客数量→阅览数量→下单数量→付款数量→完成数量, ...

  4. 提取图片中的文字怎么做?这几种简单方法别错过

    图片中的文字怎么提取出来?图片中的文字需要手动输入或复制粘贴到其他文档中,而通过提取文字,可以节省用户的时间和劳动力.用户可以使用提取文字功能,快速地将图片中的文字提取出来,并且避免手动输入或复制粘贴 ...

  5. 20210506“收听”22kHz以下的无线电波的几种简单方法

    https://www.eet-china.com/news/39a11448.html 20210506"收听"22kHz以下的无线电波的几种简单方法 时间:2021-05-06 ...

  6. flac格式如何转mp3,3种简单方法值得收藏

    flac格式如何转mp3?mp3是小伙伴们所熟知的音频格式,相信flac格式也一定有小伙伴知道,它是一种无损音频压缩格式,是目前流行的数字音乐文件格式之一.那么为什么要将flac格式转换成mp3格式呢 ...

  7. php xml对象解析_php解析xml 的四种简单方法(附实例)

    XML处理是开发过程中经常遇到的,PHP对其也有很丰富的支持,本文只是对其中某几种解析技术做简要说明,包括:Xml parser, SimpleXML, XMLReader, DOMDocument. ...

  8. 访问Windows 11恢复环境的5种简单方法

    问Windows 11恢复环境的5种简单方法 原文地址:我使用的第二个访问Windows 11恢复环境的5种简单方法 Windows 11恢复环境可以帮助您排除故障.恢复或引导设备,但如何访问设备并运 ...

  9. 企业降低包装成本的13种简单方法(下篇)

    在我们的上一篇文章:电商降低包装成本的13种简单方法(上篇)中,我们分享了7种降低包装成本的方法,本篇是降低包装成本的13种方法系列的下篇,希望能够帮到大家降本增效. 8 - 减少使用填充物 空隙填充 ...

最新文章

  1. 9个常用iptables配置实例
  2. window.location获取url各项参数详解
  3. 使用阿里云镜像maven管理配置开发环境
  4. 音视频通话:小议音频处理与压缩技术
  5. 2017腾讯编程题----游戏人物标记
  6. 流星数据恢复软件 v2.4
  7. mysql 分表_MySQL如何分库分表
  8. “编程能力差,90%输在了这点上!”骨灰级工程师:其实你们都是瞎努力!
  9. webpack4.0学习笔记
  10. JavaScript知识整理(一)——W3school
  11. 运行navicat报出Missing required library libmysql_d.dll,126问题
  12. CS5211:EDP转LVDS转换器,可替代PS8622,PS8625,CH7511等芯片!
  13. 树莓派系统安装和环境配置
  14. Map container is already initialized.
  15. 怎么选择触摸液晶广告机?
  16. 第5-2课:图的拓扑排序
  17. 提升网站运营效果的方法有哪些?网站运营有什么方法和技巧?
  18. 「PAT乙级真题解析」Basic Level 1053 住房空置率 (问题分析+完整步骤+伪代码描述+提交通过代码)
  19. php 用count 变量,countif函数的使用方法 PHP的可变变量名的使用方法分享
  20. 两个日期相差月数计算公式

热门文章

  1. Asus Music Now is not installed
  2. 坊间传言的“阿里云上市”,有三好和三不好
  3. ITextSharp 批量电子签章
  4. JVM架构_XmnXmsXmxXss有什么区别:转
  5. 零基础学习xlwings,看这篇文章就够了
  6. 《逻辑思维简易入门》(第2版) 阅读笔记二
  7. browserify_Browserify入门
  8. 字节跳动,华为,阿里巴巴,小米,腾讯 2021大厂面试经历系列之初、中、高级测试工程师面试题汇总(附答案)
  9. 操作系统第二次试验:进程控制试验
  10. python 打印模块_Python 日志打印模块