QT Widget - 随便画个圆

简介

实现在界面中画一个圆, 其实目的是想画一个LED效果的圆。

代码

#include <QApplication>
#include <QWidget>
#include <QPainter>
#include <QColor>
#include <QPen>class LEDWidget : public QWidget
{
public:LEDWidget(QWidget *parent = nullptr) : QWidget(parent) {}protected:void paintEvent(QPaintEvent *event) override{QPainter painter(this);painter.setRenderHint(QPainter::Antialiasing);  // 反锯齿QPen pen;pen.setColor(QColor(128, 128, 128)); // 设置线颜色为浅灰色painter.setPen(pen);// 设置LED灯的颜色和大小
//        QColor ledColor(85, 239, 196); // 红色int ledSize = std::max(20, width() >= height() ? height() - 10 : width() - 10);QLinearGradient gradient(0, 0, width(), height());gradient.setColorAt(0, "#84fab0");gradient.setColorAt(1, "#8fd3f4");painter.setBrush(gradient);// 计算LED灯的位置int x = (width() - ledSize) / 2;int y = (height() - ledSize) / 2;// 绘制LED灯的主体
//        painter.setBrush(ledColor);painter.drawEllipse(x, y, ledSize, ledSize);}
};int main(int argc, char *argv[]) {QApplication app(argc, argv);LEDWidget widget;widget.show();return app.exec();
}

代码解读

  1. 边框
		QPen pen;pen.setColor(QColor(128, 128, 128)); // 设置线颜色为浅灰色painter.setPen(pen);

此段使圆边框为浅灰色是看上去有点浅影子效果,更像LED灯;

  1. 填充
		QLinearGradient gradient(0, 0, width(), height());gradient.setColorAt(0, "#84fab0");gradient.setColorAt(1, "#8fd3f4");painter.setBrush(gradient);

从这个网址 添加链接描述 取色, 并实现渐变色效果, 模拟灯的亮区效果; 这里可以改成全局设置颜色,设置后按照颜色改为其他渐变色效果;

  1. 圆的大小
int ledSize = std::max(20, width() >= height() ? height() - 10 : width() - 10);// 计算LED灯的位置int x = (width() - ledSize) / 2;int y = (height() - ledSize) / 2;
第一个用于确保最小的圆 及 自适应效果;
计算x, y位置保持居中

效果

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

API的定义|电子商务网站搭建中API的应用

从技术上讲&#xff0c;API是应用程序编程接口的首字母缩写&#xff0c;被认为是构建应用软件的一组协议。实际上&#xff0c;API 是让人们保持数字联系的大部分基础。 从我们手机上的应用程序到复杂的飞行控制系统&#xff0c;API 将原本完全不同的系统组合在一起以创建单一…

MySQL通过Binlog日志恢复数据库

一、MySQL Binlog 简介 MySQL 的二进制日志 binlog 可以说是 MySQL 最重要的日志&#xff0c;它记录了所有的 DDL 和 DML 语句&#xff08;除了数据查询语句select、show等&#xff09;&#xff0c;以事件形式记录&#xff0c;还包含语句所执行的消耗的时间&#xff0c;MySQL的…

Sui 概览:技术特色与生态发展现状

作者&#xff1a;stellafootprint.network 数据来源&#xff1a;Sui Overview Sui 区块链的推出是区块链技术进一步革新的标志。该链由 Mysten Labs 倾力打造&#xff0c;其团队成员曾在 Meta 拥有卓越的职业成就。Sui 是一个无需许可的 Layer 1&#xff0c;在上线主网之前就…

ABAQUS软件属于哪家公司 硕迪科技

ABAQUS是由法国达索公司开发的一款工程仿真软件&#xff0c;全名为"Advanced Simulation for Engineering and Sciences"&#xff0c;简称为ABAQUS。它在机械工程、土木工程、能源与采矿工程、电子与电气工程、化学工程、生物学等多个领域得到广泛应用。 ABAQUS具备强…

轻松搞定!微信快速统计数据报表妙招

在当今竞争激烈的私域流量市场中&#xff0c;掌握微信数据报表统计成为了一项不可或缺的技能。 接下来就给大家说说怎样才能快速搞定微信的各项数据报表&#xff0c;让大家都可以更清晰地了解自己的微信或是员工工作号的数据。 1、明确统计需求 首先要确定好统计的目的是什么…

自动封箱打包码垛缠绕流水线案例

广西交投在某地新建工厂后&#xff0c;需要建设一条生产隧道灯&#xff0c;后段自动封箱打包码垛缠绕包装线。 凯隆包装在深入了解客户需求后&#xff0c;结合客户实际生产情况&#xff0c;为客户量身定制了集智能感应系统、产品自动折盖上下封箱、捆扎两道打包带、码垛机械臂自…

Oracle 中ROW_NUMBER() OVER()函数用法详解

select * from ( select t.data maxdata, datatime,s.xlmc,ROW_NUMBER() OVER (PARTITION BY s.xlmc ORDER BY datatime) AS rn from HISTORY_FH_ONEDAY t, CURRENT_FH_XL s where t.code s.code ) c where c.rn1

数字滤波器设计——Matlab实现数字信号处理<1>

目录 一.实验内容 二.代码分析 1.信号产生部分 2.利用傅立叶级数展开的方法&#xff0c;自由生成所需的x(t) 3.通过选择不同的采样间隔T&#xff08;分别选T>或<1/2fc&#xff09;&#xff0c;从x(t)获得相应的x(n) 3.对获得的不同x(n)分别作傅立叶变换&#xff0c…

2021年数维杯国际大学生数学建模D题2021年电影市场票房波动模型分析求解全过程文档及程序

2021年数维杯国际大学生数学建模 D题 2021年电影市场票房波动模型分析 原题再现&#xff1a; 1、电影票房预测建模背景   随着人们文化消费需求的增加&#xff0c;电影院和银幕的数量不断增加&#xff0c;我国的电影产业不断呈现出繁荣景象。2019年&#xff0c;全国电影票房…

解决vscode终端显示乱码的问题!

不知道小伙伴们在使用vscode的时候有没有遇到中文乱码的问题&#xff0c;反正我是深深的被困扰着&#xff0c;而且我的调试控制台不会乱码&#xff0c;只有终端显示的时候乱码——非常奇怪。 我也是反反复复尝试了很多方法&#xff0c;终于解决了这个问题。 话不多说&#xf…

环境搭建及源码运行_java环境搭建_maven

书到用时方恨少、觉知此时要躬行&#xff1b;拥有技术&#xff0c;成就未来&#xff0c;抖音视频教学地址&#xff1a;​​​​​​​ ​​​​​​​ 1、介绍 1&#xff09;管理项目依赖和版本 统一的项目依赖和版本管理 ​​​​​​​​​​​ 2&#xff09;Maven支持多模块…

大模型自定义算子优化方案学习笔记:CUDA算子定义、算子编译、正反向梯度实现

01算子优化的意义 随着大模型应用的普及以及算力紧缺&#xff0c;下一步对于计算性能的追求一定是技术的核心方向。因为目前大模型的计算逻辑是由一个个独立的算子或者说OP正反向求导实现的&#xff0c;底层往往调用的是GPU提供的CUDA的驱动程序。如果不能对于整个计算过程学习…