当前位置: 首页 > news >正文

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.lryc.cn/news/262541.html

相关文章:

  • js输入框部分内容不可编辑,其余正常输入,el-input和el-select输入框和多个下拉框联动后的内容不可修改
  • 分布式文件存储系统minio了解下
  • 迅为RK3568开发板使用OpenCV处理图像-ROI区域-位置提取ROI
  • 重新认识Word——尾注
  • 所有学前教育专业,一定要刷到这篇啊
  • colmap三维重建核心逻辑梳理
  • 查询某个类是在哪个JAR的什么版本开始出现的方法
  • Linux本地搭建StackEdit Markdown编辑器结合内网穿透实现远程访问
  • k8s中ConfigMap、Secret创建使用演示、配置文件存储介绍
  • Linux服务器性能优化小结
  • ELF文件结构
  • 【C++】有关string迭代器的几道OJ题详解
  • 谷歌宣布向云计算客户开放 Gemini Pro,开发者可用其构建应用
  • 软件测试用例经典方法 | 单元测试法案例
  • Leetcode 2967. Minimum Cost to Make Array Equalindromic
  • 【数据结构】什么是堆?
  • 生产环境_Spark处理轨迹中跨越本初子午线的经度列
  • Vue前端与后端放在一起的搭建方式
  • SI24R03国产自主可控RISC-V架构MCU低功耗2.4GHz收发芯片SoC
  • 基于FPGA的温度控制系统设计(论文+源码)
  • C语言训练:三个字符串比较大小,实现两个整数数的交换统计二进制中1的个数
  • module ‘tensorflow‘ has no attribute XXX 报错解决
  • MySQL数据库 DDL
  • 力扣二叉树--总结篇(2)
  • 小米移动端页面练习---重点:导航栏点击下箭头内容的切换以及样式,高亮显示的实现
  • 从零开始创建一个项目,springBoot+mybatisPlus+mysql+swagger+maven
  • 【视点合成】代码解读:生成demo视频
  • Process On在线绘制流程图
  • 【Hadoop-OBS-Hive】利用华为云存储对象 OBS 作为两个集群的中间栈 load 文件到 Hive
  • 直线检测算子