《Qt窗口动画实战:Qt实现呼吸灯效果》
Qt窗口动画实战:Qt实现呼吸灯效果
在嵌入式设备或桌面应用中,呼吸灯效果是一种常见且优雅的UI动画,常用于指示系统状态或吸引用户注意。本文将介绍如何使用Qt动画框架实现平滑的呼吸灯效果。
一、实现原理
利用Qt自带的动画框架来实现,具体实现看代码:

2、代码实现
#ifndef BUTTON_H
#define BUTTON_H#include <QPropertyAnimation>
#include <QSequentialAnimationGroup>
#include <QPainter>
#include <QColor>
#include <QWidget>class BreathingLight : public QWidget {Q_OBJECTQ_PROPERTY(int alpha READ alpha WRITE setAlpha)public:BreathingLight(QWidget *parent = nullptr) : QWidget(parent), m_alpha(0) {setFixedSize(200, 200);// 创建两个动画,一个从0到255,一个从255到0QPropertyAnimation *animationUp = new QPropertyAnimation(this, "alpha");animationUp->setDuration(2500); // 动画时长为2000毫秒animationUp->setStartValue(20); // 起始透明度animationUp->setEndValue(255); // 结束透明度animationUp->setEasingCurve(QEasingCurve::InOutQuad); // 使用平滑的缓入缓出动画曲线QPropertyAnimation *animationDown = new QPropertyAnimation(this, "alpha");animationDown->setDuration(2500); // 动画时长为2000毫秒animationDown->setStartValue(255); // 起始透明度animationDown->setEndValue(20); // 结束透明度animationDown->setEasingCurve(QEasingCurve::InOutQuad); // 使用平滑的缓入缓出动画曲线// 创建一个动画组,将两个动画添加进去,并设置为循环播放QSequentialAnimationGroup *animationGroup =new QSequentialAnimationGroup(this);animationGroup->addAnimation(animationUp);animationGroup->addAnimation(animationDown);animationGroup->setLoopCount(-1); // 无限循环animationGroup->start(); // 启动动画组}int alpha() const { return m_alpha; }void setAlpha(int alpha) {m_alpha = alpha;update(); // 更新窗口,触发重绘事件}protected:void paintEvent(QPaintEvent *event) override {Q_UNUSED(event);QPainter painter(this);QColor color(0, 255, 0, m_alpha); // 绿色,使用 m_alpha 透明度painter.setBrush(color);painter.setPen(Qt::NoPen);QRect paint_rect = rect();paint_rect.adjust(90, 90, -90, -90);painter.drawEllipse(paint_rect); // 绘制一个椭圆,填充整个窗口}private:int m_alpha;
};#include <QApplication>
#include <QTableView>
#include <QHeaderView>
#include <QStandardItemModel>
#include "button.h"int main(int argc, char *argv[])
{QApplication a(argc, argv);//button.show();BreathingLight light;light.show();return a.exec();
}#endif // BUTTON_H
3、总结:
利用Qt自带的动画系统可以很方便的就做出炫酷的效果,相比较其他传统的UI,Qt这个方案对用户来说其实还是很方便的。
相关文章:
《Qt窗口动画实战:Qt实现呼吸灯效果》
Qt窗口动画实战:Qt实现呼吸灯效果 在嵌入式设备或桌面应用中,呼吸灯效果是一种常见且优雅的UI动画,常用于指示系统状态或吸引用户注意。本文将介绍如何使用Qt动画框架实现平滑的呼吸灯效果。 一、实现原理 利用Qt自带的动画框架来实现&…...
RabbitMQ系列(六)基本概念之Routing Key
在 RabbitMQ 中,Routing Key(路由键) 是用于将消息从交换机(Exchange)路由到指定队列(Queue)的关键参数。其核心作用是通过特定规则匹配绑定关系,确保消息被正确分发。以下是其核心机…...
Spring Boot 集成 Kafka
在现代软件开发中,分布式系统和微服务架构越来越受到关注。为了实现系统之间的异步通信和解耦,消息队列成为了一种重要的技术手段。Kafka 作为一种高性能、分布式的消息队列系统,被广泛应用于各种场景。而 Spring Boot 作为一种流行的 Java 开…...
CentOS中shell脚本对多台机器执行下载安装
1.建立免密ssh连接 详情见这篇: CentOS建立ssh免密连接(含流程剖析)-CSDN博客 2.脚本编写 我这里只是简单写了个demo进行演示,如果服务器很多可以先暂存成文件再逐行读取host进行连接并执行命令 用node1去ssh连接node2和node…...
浅析eBPF
目录 一、eBPF 原理 二、eBPF 已可投入使用的场景 三、eBPF 与 Jaeger/Zipkin 的区别及先进性 四、使用 eBPF 的开源软件 五、开源软件的局限性或待实现功能 猫哥说 一、eBPF 原理 eBPF (extended Berkeley Packet Filter) 是一种内核技术,允许用户在内核空间…...
HTML 基础 (快速入门)详细步骤和示例
目录 创建基本的 HTML 文件 添加内容到页面 页面布局与链接 HTML(超文本标记语言)是构建网页的基础技术,以下是 HTML 基础的详细步骤和示例: 创建基本的 HTML 文件 步骤一:新建文件 在本地计算机上选择一个合适的…...
力扣-动态规划-139 单词拆分
思路 dp数组定义:用wordDict数组可以完成不超过j的字符串的可能为dp[j]递推公式: tmp s.substr(j - wordDict[i].size(), wordDict[i].size()); dp[j] (dp[j - wordDict[i].size()] && wordDict[i] tmp) || dp[j]; dp数组初始化:…...
建筑能耗监测系统数据采集装置 物联网网关功能参数介绍
安科瑞刘鸿鹏 摘要 随着物联网(IoT)技术的迅猛发展,现代物联网系统的规模和复杂度不断增加,各种智能设备和传感器的广泛应用为数据采集和分析提供了丰富的信息源。然而,面对不同协议、标准和通信方式的设备ÿ…...
vue深拷贝:1、使用JSON.parse()和JSON.stringify();2、使用Lodash库;3、使用深拷贝函数(采用递归的方式)
文章目录 引言三种方法的优缺点在Vue中,实现数组的深拷贝I JSON.stringify和 JSON.parse的小技巧深拷贝步骤缺点:案例1:向后端请求路由数据案例2: 表单数据处理时复制用户输入的数据II 使用Lodash库步骤适用于复杂数据结构和需要处理循环引用的场景III 自定义的深拷贝函数(…...
ES 删除index 的curl
以下是使用 `curl` 命令删除 Elasticsearch 索引的格式和示例: ### 基本格式 ```bash curl -XDELETE "http://<node-ip|hostname>:9200/<index-name>" ``` - `<node-ip|hostname>`:Elasticsearch 节点的 IP 地址或主机名。 - `<index-name&g…...
游戏引擎学习第124天
仓库:https://gitee.com/mrxiao_com/2d_game_3 回顾/复习 今天是继续完善和调试多线程的任务队列。之前的几天,我们已经介绍了多线程的一些基础知识,包括如何创建工作队列以及如何在线程中处理任务。今天,重点是解决那些我们之前没有注意到…...
第十四届蓝桥杯Scratch11月stema选拔赛真题——小猫照镜子
编程实现: 小猫照镜子。(背景非源素材) 具体要求: 1). 运行程序,角色、背景如图所示; 完整题目可点击下方链接查看,支持在线编程~ 小猫照镜子_scratch_少儿编程题库学习中心-嗨信奥https://www.hixinao.com/tiku/s…...
使用vscode导出Markdown的PDF无法显示数学公式的问题
我的硬件环境是M2的MacBook air,在vscode中使用了Markdown PDF来导出md文件对应的PDF。但不管导出html还是PDF文件,数学公式都是显示的源代码。 我看了许多教程,给的是这个方法:在md文件对应的html文件中加上以下代码:…...
前端系列之:Blob
Blob 与二进制 什么是二进制? 二进制是计算机数据的基本表示形式,只使用 0 和 1 两个数字来表示数值。任何类型的数据(无论是文本、图片、音频文件等)都可以通过二进制表示。 什么是 Blob? 全称 Binary Large Object&a…...
【项目管理】基于 C 语言的 QQ 聊天室实现(TCP + 多线程 + SQLite3)
基于 C 语言的 QQ 聊天室(TCP + 多线程 + SQLite3) 项目功能基础功能: 登录、注册、添加好友、私聊、创建群聊、群聊扩展功能: 删除好友、注销账号、好友在线状态、群管理(拉人/踢人)、VIP 特权、邮件通知等 功能介绍:模拟QQ聊天客户端:登录界面:1、登录2、注册 //将用…...
Apache Flink:实时数据流处理的终极武器
Apache Flink:实时数据流处理的终极武器 在当今这个数据驱动的世界,实时数据流处理已经成为各行各业的核心需求。从金融风控到电商推荐,从物联网监控到网络安全,毫秒级的响应能力决定了一家公司在市场中的竞争力。而在众多流式计…...
点云处理入门--PointNetPointNet++论文与代码详解
基础知识 点云数据: 点云是一种通过三维扫描设备或计算机图形学技术获取的三维空间数据,通常由一系列点组成,每个点包含其在三维空间中的坐标(如 x,y,z),有时还可能包含颜色、强度等附加信息。 介绍几种常…...
通过Nginx负载均衡+Keepalived实现业务高可用
通过Nginx负载均衡和Keepalived可以实现业务的高可用,以下是详细的实现步骤: 环境准备 假设我们有3台服务器,IP地址分别为: 服务器1(Nginx Keepalived 主节点):192.168.1.100服务器2&#x…...
Spark技术系列(三):Spark算子全解析——从基础使用到高阶优化
Spark技术系列(三):Spark算子全解析——从基础使用到高阶优化 1. 算子核心概念与分类体系 1.1 算子本质解析 延迟执行机制:转换算子构建DAG,行动算子触发Job执行任务并行度:由RDD分区数决定(可通过spark.default.parallelism全局配置)执行位置优化:基于数据本地性的…...
ES6模块化详解:导入与导出方式
在现代 JavaScript 开发中,模块化是代码管理和组织的重要工具。ES6(ECMAScript 2015)引入了模块化的概念,通过 import 和 export 来组织代码,使得模块的管理变得更加清晰和简洁。本文将详细介绍 ES6 中的各种模块导入导…...
26年前端面试新时代,问了几个AI题没人会怎么给offer???
当“你会不会用Copilot”成了第一题,全场沉默的那三秒,我看到了普通前端的末日。上周,朋友圈被一位36岁老哥的帖子刷屏了。他说自己已经摸清了“前端AI”面试的拷打套路,从被问到卡壳,到能跟面试官聊AI工程化的落地细节…...
30KHz调频深度0.5%:用示波器实测SSC扩频时钟的完整指南(以PCIe为例)
30KHz调频深度0.5%:用示波器实测SSC扩频时钟的完整指南(以PCIe为例) 在高速数字系统设计中,电磁干扰(EMI)始终是工程师面临的核心挑战之一。当PCIe 3.0信号以8GT/s速率传输时,时钟信号的谐波辐射…...
html标签如何兼容旧浏览器_HTML5新标签降级方案【方法】
IE8及以下不识别HTML5语义标签,需用document.createElement注册并配合html5shiv添加display:block样式才能正常渲染和操作。旧版 IE(尤其是 IE8 及以下)不识别 <header>、<nav>、<section> 等 HTML5 语义标签,直…...
解决Ubuntu浏览器认证校园网址无法打开的
清理 WebKit 缓存rm -rf ~/.cache/WebKit/ rm -rf ~/.cache/gnome-shell/portal-helper/重启网络管家sudo systemctl restart NetworkManager...
Notepad++深度解析:免费开源轻量高效的程序员必备代码编辑器
摘要 本文由拥有20年经验的全栈工程师撰写,深度解析Notepad这款免费开源代码编辑器的核心技术优势、功能特性与全流程实操指南,覆盖语法高亮、插件扩展等核心能力,适配多语言开发场景,为开发者提供高效稳定的文本编辑解决方案。 访…...
【限时解锁】2026奇点大会议程PDF+演讲PPT合集(含17场技术Demo实录链接),仅开放至本周日24点
第一章:2026奇点智能技术大会完整议程公布:50AI大咖齐聚上海 2026奇点智能技术大会(https://ml-summit.org) 由全球人工智能前沿研究机构与长三角AI产业联盟联合主办的2026奇点智能技术大会将于4月18日至20日在上海张江科学会堂举行。本届大会以“智能…...
Photoshop CS6 分享
下载链接Photoshop CS6 好用链接:https://pan.quark.cn/s/35e0b2cbe8094:/^tX0KdDR5jR^%第二步:双击exe文件打开即可\n三:软件介绍\n\n\n原版安装复杂、占满 C 盘,新版要求高配置带不动?今天给大家安排一款「宝藏版本」…...
nli-distilroberta-base构建智能Agent:实现多轮对话与复杂任务推理
基于nli-distilroberta-base构建智能Agent:实现多轮对话与复杂任务推理 1. 智能Agent的应用场景与挑战 在现代人机交互场景中,用户越来越倾向于使用自然语言表达复杂需求。比如"帮我订下周二上午去上海的机票,并安排下午2点与客户A的会…...
别把 Contract C1 当成一个小开关,它决定了你的 ABAP 接口能不能活过下一轮升级
项目里最容易把人拖进泥潭的,往往不是一段代码写不出来,而是一个原本跑得好好的扩展,在系统升级之后突然开始失稳。昨天还能用的自定义逻辑,今天因为标准对象的参数变了、字段被改了、关联目标被挪了,整个流程从查询层一直碎到服务层。到了 ABAP Cloud 和 Clean Core 这条…...
UE5: 解密Actor Tick的注册时机与执行流程
1. 从“Tick”说起:为什么我们需要关心它? 如果你用过UE5,哪怕只是新建一个空白项目,放一个立方体进去,大概率也见过“Tick”这个词。在蓝图的“事件”图表里,那个每帧自动执行的“Event Tick”节点&#x…...
