QT 圆盘百分比

news2025/1/11 11:53:41

1.

/* 设置抗锯齿 */
    painter.setRenderHints(QPainter::Antialiasing, true);
    /* 最外层的圆 */
    QRect drawRect = event->rect();
    QRadialGradient gradient1(drawRect.center(),
                              drawRect.width() / 2,
                              drawRect.center());
    gradient1.setColorAt(0, Qt::transparent);
    gradient1.setColorAt(0.5, Qt::transparent);// 稍微增加透明部分的范围
    gradient1.setColorAt(0.51, QColor("#00237f"));// 开始显示深蓝色
    gradient1.setColorAt(0.58, QColor("#00237f"));// 保持深蓝色一段时间
    gradient1.setColorAt(0.59, Qt::transparent);// 渐变回透明
    gradient1.setColorAt(1, Qt::transparent);
    painter.setBrush(gradient1);
    painter.setPen(Qt::NoPen);
    painter.drawEllipse(drawRect);
 
    /* 里层的圆 */
    QRadialGradient gradient2(drawRect.center(),
                              drawRect.width() / 2,
                              drawRect.center());
    gradient2.setColorAt(0, Qt::transparent);
    gradient2.setColorAt(0.420, Qt::transparent);
    gradient2.setColorAt(0.421, QColor("#885881e3"));
    gradient2.setColorAt(0.430, QColor("#5881e3"));
    gradient2.setColorAt(0.440, QColor("#885881e3"));
    gradient2.setColorAt(0.441, Qt::transparent);
    gradient2.setColorAt(1, Qt::transparent);
    painter.setBrush(gradient2);
    painter.setPen(Qt::NoPen);
    painter.drawEllipse(drawRect);
 
    /* 数字 */
    QFont font;
    font.setPixelSize(drawRect.width() / 10);
    painter.setPen(Qt::white);
    painter.setFont(font);
    painter.drawText(drawRect, Qt::AlignCenter,
                     QString::number(angleLength * 100 / 360) + "%");
 
    /* 发光背景圆 */
    painter.translate(drawRect.width() >> 1, drawRect.height() >> 1);
    int radius = drawRect.width() / 2;
    /* radius<< 1(左移1位)相当于radius*2 */
    QRectF rect(-radius, -radius, radius << 1, radius << 1);
 
    QRadialGradient gradient3(0, 0, radius);
    gradient3.setColorAt(0, Qt::transparent);
    gradient3.setColorAt(0.42, Qt::transparent);
    gradient3.setColorAt(0.51, QColor("#500194d3"));
    gradient3.setColorAt(0.55, QColor("#22c1f3f9"));
    gradient3.setColorAt(0.58, QColor("#500194d3"));
    gradient3.setColorAt(0.68, Qt::transparent);
    gradient3.setColorAt(1.0, Qt::transparent);
    painter.setBrush(gradient3);
    QPainterPath path1;
    path1.arcTo(rect, startAngle, -angleLength);
    painter.setPen(Qt::NoPen);
    painter.drawPath(path1);
 
    /* 发光圆/弧 */
    QRadialGradient gradient4(0, 0, radius);
    gradient4.setColorAt(0, Qt::transparent);
    gradient4.setColorAt(0.49, Qt::transparent);
    gradient4.setColorAt(0.50, QColor("#4bf3f9"));
    gradient4.setColorAt(0.59, QColor("#4bf3f9"));
    gradient4.setColorAt(0.60, Qt::transparent);
    gradient4.setColorAt(1.0, Qt::transparent);
    painter.setBrush(gradient4);
    QPainterPath path2;
    path2.arcTo(rect, startAngle, -angleLength);
    painter.setPen(Qt::NoPen);
    painter.drawPath(path2);
 
    /* 恢复状态 */
    painter.restore();
 
    /* 设置事件对象的accept标志 */
    event->accept();


#include "arcgraph.h"

ArcGraph::ArcGraph(QWidget *parent)
    : QWidget(parent),
      startAngle(90),
      angleLength(100)
{
    this->setMinimumSize(100, 100);
    setAttribute(Qt::WA_TranslucentBackground, true);
}

ArcGraph::~ArcGraph()
{
}

void ArcGraph::setstartAngle(int angle)
{
    startAngle = angle;
    this->repaint();
}

void ArcGraph::setangleLength(int length)
{
    angleLength = length;
    this->repaint();
}

void ArcGraph::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);

    /* 保存状态 */
    painter.save();

    /* 设置抗锯齿 */
    painter.setRenderHints(QPainter::Antialiasing, true);

    /* 最外层的圆 */
    QRect drawRect = event->rect();
    QRadialGradient gradient1(drawRect.center(),
                              drawRect.width() / 2,
                              drawRect.center());
    gradient1.setColorAt(0, Qt::transparent);
    gradient1.setColorAt(0.5, Qt::transparent);// 稍微增加透明部分的范围
    gradient1.setColorAt(0.51, QColor("#00237f"));// 开始显示深蓝色
    gradient1.setColorAt(0.58, QColor("#00237f"));// 保持深蓝色一段时间
    gradient1.setColorAt(0.59, Qt::transparent);// 渐变回透明
    gradient1.setColorAt(1, Qt::transparent);
    painter.setBrush(gradient1);
    painter.setPen(Qt::NoPen);
    painter.drawEllipse(drawRect);

    /* 里层的圆 */
    QRadialGradient gradient2(drawRect.center(),
                              drawRect.width() / 2,
                              drawRect.center());
    gradient2.setColorAt(0, Qt::transparent);
    gradient2.setColorAt(0.420, Qt::transparent);
    gradient2.setColorAt(0.421, QColor("#885881e3"));
    gradient2.setColorAt(0.430, QColor("#5881e3"));
    gradient2.setColorAt(0.440, QColor("#885881e3"));
    gradient2.setColorAt(0.441, Qt::transparent);
    gradient2.setColorAt(1, Qt::transparent);
    painter.setBrush(gradient2);
    painter.setPen(Qt::NoPen);
    painter.drawEllipse(drawRect);

    /* 数字 */
    QFont font;
    font.setPixelSize(drawRect.width() / 10);
    painter.setPen(Qt::white);
    painter.setFont(font);
    painter.drawText(drawRect, Qt::AlignCenter,
                     QString::number(angleLength * 100 / 360) + "%");

    /* 发光背景圆 */
    painter.translate(drawRect.width() >> 1, drawRect.height() >> 1);
    int radius = drawRect.width() / 2;
    /* radius<< 1(左移1位)相当于radius*2 */
    QRectF rect(-radius, -radius, radius << 1, radius << 1);

    QRadialGradient gradient3(0, 0, radius);
    gradient3.setColorAt(0, Qt::transparent);
    gradient3.setColorAt(0.42, Qt::transparent);
    gradient3.setColorAt(0.51, QColor("#500194d3"));
    gradient3.setColorAt(0.55, QColor("#22c1f3f9"));
    gradient3.setColorAt(0.58, QColor("#500194d3"));
    gradient3.setColorAt(0.68, Qt::transparent);
    gradient3.setColorAt(1.0, Qt::transparent);
    painter.setBrush(gradient3);
    QPainterPath path1;
    path1.arcTo(rect, startAngle, -angleLength);
    painter.setPen(Qt::NoPen);
    painter.drawPath(path1);

    /* 发光圆/弧 */
    QRadialGradient gradient4(0, 0, radius);
    gradient4.setColorAt(0, Qt::transparent);
    gradient4.setColorAt(0.49, Qt::transparent);
    gradient4.setColorAt(0.50, QColor("#4bf3f9"));
    gradient4.setColorAt(0.59, QColor("#4bf3f9"));
    gradient4.setColorAt(0.60, Qt::transparent);
    gradient4.setColorAt(1.0, Qt::transparent);
    painter.setBrush(gradient4);
    QPainterPath path2;
    path2.arcTo(rect, startAngle, -angleLength);
    painter.setPen(Qt::NoPen);
    painter.drawPath(path2);

    /* 恢复状态 */
    painter.restore();

    /* 设置事件对象的accept标志 */
    event->accept();
}

#ifndef ARCGRAPH_H
#define ARCGRAPH_H

#include <QWidget>
#include <QPainter>
#include <QPaintEvent>

/* 蓝色科技感弧形视图 */
class ArcGraph : public QWidget
{
    Q_OBJECT

public:
    ArcGraph(QWidget *parent = nullptr);
    ~ArcGraph();

    void setstartAngle(int);
    void setangleLength(int);

private:
    void paintEvent(QPaintEvent *event);
    int startAngle;
    int angleLength;
};
#endif // ARCGRAPH_H

应用:

ArcGraph *arcGraph=new ArcGraph;
arcGraph->setangleLength(als.toUInt() * 360 / 65535);

效果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1686660.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

志愿者招募|基于SSM+vue的志愿者招募网站系统的设计与实现(源码+数据库+文档)

志愿者招募网站 目录 基于SSM&#xff0b;vue的志愿者招募网站系统的设计与实现 一、前言 二、系统设计 三、系统功能设计 1系统功能模块 2后台登录模块 5.2.1管理员功能 5.2.2用户功能 5.2.3志愿组织功能 四、数据库设计 五、核心代码 六、论文参考 七、最新计…

【Qt常用控件】—— 布局管理器

目录 前言 &#xff08;一&#xff09;垂直布局 &#xff08;二&#xff09;水平布局 &#xff08;三&#xff09;网格布局 &#xff08;四&#xff09;表单布局 &#xff08;五&#xff09;分组布局 &#xff08;六&#xff09;Spacer 总结 前言 之前使⽤Qt在界⾯上…

【软件工程】【23.10】p2

关键字&#xff1a; 软件复用技术、过程途径、特定需求是文档核心、数据字典条目、高内聚低耦合独立性、数据流图映射模块结构图、UML依赖、用例图关系、RUB迭代、程序规格说明等价类划分、有效性测试的目标、喷泉模型面向对象、软件验证过程、CMMI

15.回归问题

回归问题是机器学习领域中的核心问题之一&#xff0c;它旨在通过拟合数据点来建立数学模型&#xff0c;以预测因变量的值。回归问题不仅广泛应用于金融、医疗、工程等领域&#xff0c;也是数据分析和机器学习算法研究的重要基础。本文将深入探讨回归问题的基本概念、数学原理、…

Java | Leetcode Java题解之第100题相同的树

题目&#xff1a; 题解&#xff1a; class Solution {public boolean isSameTree(TreeNode p, TreeNode q) {if (p null && q null) {return true;} else if (p null || q null) {return false;}Queue<TreeNode> queue1 new LinkedList<TreeNode>();…

回文排列00

题目链接 回文排列 题目描述 注意点 回文串不一定是字典当中的单词 解答思路 因为本题中回文串不一定是字典当中的单词&#xff0c;所以使用Map存储每个字符出现的次数&#xff0c;并统计出现次数为奇数的字符的数量&#xff0c;如果多余1个&#xff0c;则不是回文排列 代…

Mia for Gmail for Mac:Mac用户的邮件管理首选

对于追求高效工作的Mac用户来说&#xff0c;Mia for Gmail for Mac无疑是邮件管理的首选工具。它以其卓越的性能和丰富的功能&#xff0c;为用户带来了前所未有的高效邮件管理体验。 Mia for Gmail for Mac不仅支持多帐号登录和标签选择功能&#xff0c;还提供了邮件分类、垃圾…

如何选择序列化协议:关键因素与场景分析

如何选择序列化协议&#xff1a;关键因素与场景分析 序列化协议的选择直接影响着系统的性能、可维护性及跨平台兼容性。以下是针对不同场景下&#xff0c;几种常见序列化协议的选择建议&#xff1a; 1. 公司间系统调用&#xff08;性能要求宽松&#xff09; SOAP (基于XML)&a…

【Python】 Python脚本中的#!(Shebang):使用指南与最佳实践

基本原理 在Python脚本编程中&#xff0c;#!&#xff08;通常称为shebang&#xff09;是一个特殊的行&#xff0c;它告诉操作系统使用哪个解释器来执行脚本。在Unix-like系统中&#xff0c;shebang是必需的&#xff0c;因为它允许脚本作为独立的程序运行&#xff0c;而不需要显…

揭秘:APP广告变现逻辑

APP广告变现项目逻辑 一、项目背景与目标 在当今数字化时代&#xff0c;移动应用&#xff08;APP&#xff09;已成为人们日常生活中不可或缺的一部分。随着智能手机的普及&#xff0c;APP市场呈现出爆炸性增长&#xff0c;为开发者提供了巨大的商业机会。然而&#xff0c;如何在…

全球点赞第一人颜廷利:英文“China”中国及瓷器背后的易经最前沿教育思想

在全球化的语境中&#xff0c;“China”一词不仅标识了一个国家&#xff0c;它还承载了一种文化符号——瓷器。这种看似简单的词汇背后&#xff0c;蕴藏着丰富的哲学思想和深刻的文化意蕴。 让我们从一种不同的角度来审视这个词汇。当我们将“China”作为音译词进行解读时&…

Covalent的CQT质押迁移比率在以太坊上升至13%,超Moonbeam记录

Covalent Network&#xff08;CQT&#xff09;作为领先的结构化模块化数据基础设施层&#xff0c;目前其在以太坊上的 CQT 质押比率已超过之前在 Moonbeam 上达到的历史最高水平。自从将质押合约迁移到以太坊不到一个月的时间里&#xff0c;超过总供应量的 13% 的 CQT 代币已被…

工业镜头的参数、选型步骤

目录 一、如何选择合适的工业镜头 1. 工业镜头的基本参数 2. 选择工业镜头的步骤 3. 案例分析&#xff1a;如何选择合适的镜头 4. 远心镜头的设计目的 二、 介绍远心镜头 2.1 远心镜头的主要特性 2.2 远心镜头的类型 2.3 远心镜头的应用 2.4 远心镜头的工作原理 2.5 …

2024电工杯A题详细思路代码分析数学建模:园区微电网风光储协调优化配置

题目分析&#xff1a;园区微电网风光储协调优化配置 我们会先给出三个问题总体的分析&#xff0c;最后会详细分析问题一的建模和详细内容。 背景&#xff1a; 园区微电网由风光发电和主电网联合为负荷供电&#xff0c;为了尽量提高风光电量的负荷占比&#xff0c;需配置较高比…

听说京东618裁员没?上午还在赶需求,下午就开会通知被裁了~

文末还有最新面经共享群&#xff0c;没准能让你刷到意向公司的面试真题呢。 京东也要向市场输送人才了? 在群里看到不少群友转发京东裁员相关的内容&#xff1a; 我特地去网上搜索了相关资料&#xff0c;看看网友的分享&#xff1a; 想不到马上就618了&#xff0c;东哥竟然抢…

科大讯飞Nano+耳机套装登场:智能录音转写,办公充电新方案

目录 一、科大讯飞Nano会议耳机&#xff1a;专业会议助手 二、会议狗Kit&#xff1a;即插即用&#xff0c;智能会议新体验 三、努比亚65W氮化镓充电头&#xff1a;全能快充&#xff0c;一充多用 四、产品总结 在这个快节奏的数字化时代&#xff0c;高效沟通与信息处理能力成…

一键部署!QQ AI 聊天机器人!支持ChatGPT、文心一言、讯飞星火、Bing、Bard、ChatGLM、POE,多账号,人设调教

随着人工智能技术的不断发展&#xff0c;智能聊天机器人已经成为我们日常生活中不可或缺的一部分。ChatGPT作为一款强大的人工智能聊天模型&#xff0c;能够为我们提供高效、便捷的聊天体验。那么&#xff0c;如何将ChatGPT接入QQ&#xff0c;实现智能聊天新体验呢&#xff1f;…

奈雪的茶、沪上阿姨、喜茶、霸王茶姬等齐聚第三届SIAL中国茶饮调配师大赛

第三届SIAL中国茶饮调配师大赛即将于5月28日-5月29日亮相2024 SIAL 西雅国际食品和饮料展览会&#xff08;上海&#xff09; 赛事时间&#xff1a;2024年5月28-29日 赛事地点&#xff1a;上海新国际博览中心 展位号&#xff1a;N4A066 本届赛事主题为“健康中国&#xff0c;…

使用ARM的Neon技术实现SHA256算法加速

需求 假设一款Armv8-A架构的芯片,由于没有硬件密码算法引擎,如何实现对SHA256算法加速。 方案 Arm Neon 技术,一种⾼级 SIMD(Single Instruction Multiple Data,一条指令操作多个数据)架构扩展,Armv8‑A 和 Armv8-R 架构均支持 Neon 技术扩展。使用 Neon 技术有多种方…

新鲜干货|「隐语城市行·成都站 x 蓉数大讲堂」硬核技术分享、多元场景实践、未来趋势洞察及前沿学术探秘

“隐语”是开源的可信隐私计算框架&#xff0c;内置 MPC、TEE、同态等多种密态计算虚拟设备供灵活选择&#xff0c;提供丰富的联邦学习算法和差分隐私机制 开源项目 github.com/secretflow gitee.com/secretflow 5月18日&#xff0c;「隐语城市行成都站 x 蓉数大讲堂」线下活…