《QT实用小工具·六十三》QT实现微动背景,界面看似静态实则动态

news/2024/9/12 18:26:30/ 标签: qt, 开发语言, c++, QWidget

1、概述
源码放在文章末尾

该项目实现了微动背景,界面看似静态实则动态,风动,幡动,仁者心动,所以到底是什么在动?哈哈~

界面会偷偷一点一点改动文字颜色的颜色填充。

虽然是动态,但是慢到难以发觉,最适合大段文字的长期阅读与写作。
不是简单的定时改变的纯色/渐变填充,还可以设置颜色变化边界、颜色数量、角度、渐变比例等。

下面是demo显示:
在这里插入图片描述
项目部分代码如下所示:

#ifndef DYNAMICBACKGROUNDPURE_H
#define DYNAMICBACKGROUNDPURE_H#include "dynamicbackgroundinterface.h"class DynamicBackgroundPure : public DynamicBackgroundInterface
{
public:DynamicBackgroundPure(QWidget *parent,QColor color1=QColor(255, 250, 240),/*花卉白*/QColor color2=QColor(253, 245, 230)/*舊蕾絲色*/);void setColor(QColor color1, QColor color2);void draw(QPainter& painter);protected:void timeout();private:ColorArray c1, c2, c;ColorArray d;ColorDirects a;QColor draw_color;
};#endif // DYNAMICBACKGROUNDPURE_H
#include "dynamicbackgroundpure.h"DynamicBackgroundPure::DynamicBackgroundPure(QWidget* parent, QColor color1, QColor color2): DynamicBackgroundInterface (parent)
{setColor(color1, color2);
}void DynamicBackgroundPure::setColor(QColor color1, QColor color2)
{// 阈值colorToArray(c1, color1);colorToArray(c2, color2);// 设置各种属性for (int i = 1; i <= 4; i++){a[i] = randBool(); // 随机变化方向c[i] = randRange(c1[i], c2[i]); // 初始随机颜色d[i] = intToUnity(c2[i]-c1[i]); // 每次变化的方向,false向1变化,true向2变化if (c[i] == c1[i]) a[i] = true;if (c[i] == c2[i]) a[i] = false;}draw_color = QColor(c[cR], c[cG], c[cB], c[cA]);
}void DynamicBackgroundPure::draw(QPainter &painter)
{painter.save();{// 绘制矩形painter.setBrush(draw_color);painter.drawRect(getGeometry());}painter.restore();
}void DynamicBackgroundPure::timeout()
{// 随机变化int t = randRange(1, 4);c[t] += a[t] ? d[t] : -d[t];if (c[t] == c1[t]) a[t] = true;if (c[t] == c2[t]) a[t] = false;draw_color = QColor(c[cR], c[cG], c[cB], c[cA]);DynamicBackgroundInterface::timeout();
}

源码下载


http://www.ppmy.cn/news/1462160.html

相关文章

python手写数字识别(PaddlePaddle框架、MNIST数据集)

python手写数字识别&#xff08;PaddlePaddle框架、MNIST数据集&#xff09; import paddle import paddle.nn.functional as F from paddle.vision.transforms import Compose, Normalizetransform Compose([Normalize(mean[127.5],std[127.5],data_formatCHW)]) # 使用tran…

MPLAB X IDE编译attiny1616工程报错却无报错信息

MPLAB X IDE(XC-8编译器)编译报错&#xff0c;无具体错误内容&#xff0c;仅显示需要xc-8 pro的警告。 内存占用率显示为81%&#xff0c;未超标。 原因&#xff1a;软件使用了microchip的bootloader功能。应用程序起始地址&#xff08;也是bootloader结束地址&#xff09;设置错…

FileLink如何实现金融行业跨网文件传输

在金融行业&#xff0c;跨网文件传输一直是一个备受关注的问题。由于金融数据的敏感性和重要性&#xff0c;如何确保文件在传输过程中的安全性、稳定性和合规性成为了金融机构急需解决的难题。而FileLink作为一款跨网文件交换系统&#xff0c;凭借其强大的功能和优势&#xff0…

python学习-使用pandas库分析excel表,并导出所需的表

核心代码 # 导入pandas库 import pandas as pd # 导入正则表达式包 import re# 指定Excel文件的路径&#xff0c;这个data.xlsx表为原始表&#xff0c;表内有40个sheet子表 file_path data.xlsx # 读取各个子表 allDf pd.read_excel(file_path, sheet_nameNone) # 获取各个子…

AndroidStudio中如何配置共享变量,以便于方便配置共享

文章目录 一、定义共享变量二、引入通用配置三、在Module中使用这个通用配置 Android studio Gradle配置通用配置 在使用Android studio Android开发中Gradle通常会遇到很多相同的配置例如在不同的module中都要配置相同的compileSdkVersion、buildToolsVersion等 这时我们可以…

低代码在物品领用领域数字化转型的案例分析

办公用品管理数字化不仅代表了企业管理模式的革新&#xff0c;更是提升运营效率和成本控制的关键举措。通过数字化手段&#xff0c;企业能够实现采购、库存、领用等流程的自动化和智能化管理&#xff0c;大幅减少人工操作&#xff0c;提高处理速度&#xff0c;确保数据的准确性…

职责链模式

职责链模式 文章目录 职责链模式什么是职责链模式通过示例了解职责链模式 什么是职责链模式 职责链模式(Chain of Responsibility):使多个对象都有机会处理请求&#xff0c;从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链&#xff0c;并沿着这条链传递该请…

element 表格滚动条滑动,表格错位

解决办法&#xff08;主要是根据滚动条的宽度决定的&#xff0c;可自行调整&#xff09; 1、.el-table__header-wrapper { width: 99.3% !important; } 2、.el-table__header-wrapper { padding-right: 10px!important; }

【MySQl】MySQL概述 | 数据库的操作 | MySQL的编码问题 | 连接器的工作流程

文章目录 一、MySQL概述1.数据库的概念MySQLMySQL中支持的数据类型&#xff1a; 2.数据库的操作1.创建数据库2.查看数据库3.选中数据库4.删除数据库 3.数据表的操作1.创建表2.查看当前数据库中的所有表3.查看指定表的结构4.删除表 二、MySQL的编码问题常见的编码类型 连接器的工…

nacos与spring cloud gateway 一起的使用的时候uri: lb://server-name配置不起用

首先我们将uri配置成本地地址测试服务是否可以调通 spring:cloud:nacos:discovery:server-addr: xxx.xxx.xxx.xxx:8848gateway:routes:- id: angular_appuri: http://localhost:8082predicates:- Path/angular/**filters:- StripPrefix1xxx.xxx.xxx.xxx:8848 切换成你的nacos服…

python高级爱心代码

python高级爱心代码实现&#xff1a; import turtle import random # 设置画布 screen turtle.Screen() screen.bgcolor("black") # 创建画笔 pen turtle.Turtle() pen.speed(0) pen.color("red") pen.penup() # 移动画笔到起始位置 pen.goto(0, -20…

视频剪辑批量转码技巧:如何将MP4视频快速转换为MP3音频的方法

在视频剪辑和音频处理的领域中&#xff0c;经常需要将视频文件转换为音频文件&#xff0c;特别是将MP4视频转换为MP3音频。这样的转换不仅可以减少文件大小&#xff0c;方便传输和存储&#xff0c;还可以在不损失音频质量的情况下&#xff0c;方便在各种设备上播放。下面&#…

无独立显卡如何安装Pytorch

以前我是直接在colab中使用pytorch&#xff0c;非常方便&#xff0c;今天折腾了一上午&#xff0c;终于搞定了pytorh的安装和环境设置&#xff0c;分享下我的安装流程&#xff0c;遇到的问题和解决方案。 1. 用pip安装Pytorch 打开cmd窗口&#xff08;按win R&#xff09;&a…

Acwing2024蓝桥杯BFS

AcWing 1355. 母亲的牛奶 bfs: #include<iostream> #include<queue> using namespace std; const int N21; int A,B,C; bool flag[N][N][N]; struct node{int a,b,c; }; queue<node>q; void check(int a,int b,int c){if(!flag[a][b][c]){q.push({a,b,c})…

【大数据】计算引擎MapReduce

目录 1.概述 1.1.前言 1.2.大数据要怎么计算&#xff1f; 1.3.什么是MapReduce&#xff1f; 2.架构 3.工作流程 4.shuffle 4.1.map过程 4.2.reduce过程 1.概述 1.1.前言 本文是作者大数据系列专栏的其中一篇&#xff0c;专栏地址&#xff1a; https://blog.csdn.ne…

Risk Of Rain 雨中冒险2服务器开服联机教程

1、购买后登录服务器&#xff08;百度莱卡云&#xff09; 1.1、第一次购买服务器会安装游戏端&#xff0c;大约5分钟左右&#xff0c;如果长时间处于安装状态请联系客服 2、设置游戏端口 由于雨中冒险2的设置需要两个端口&#xff0c;它们用于游戏端口&#xff0c;查询端口&am…

Jmeter使用While控制器

1.前言 对于性能测试场景中&#xff0c;需要用”执行某个事物&#xff0c;直到一个条件停止“的概念时&#xff0c;While控制器控制器无疑是首选&#xff0c;但是在编写脚本时&#xff0c;经常会出现推出循环异常&#xff0c;获取参数异常等问题&#xff0c;下面总结两种常用的…

AWS RDS ElasticCache 监控可观测最佳实践

在当今的电子商务时代&#xff0c;一个高效、稳定的电商平台对于保持竞争力至关重要。数据库作为电商平台的核心支撑&#xff0c;其性能直接影响到用户体验和业务流畅度。本文将深入探讨如何在电商场景下通过观测云对亚马逊云科技 RDS&#xff08;MySQL&#xff09; 和 Elastic…

MCULCD屏驱动方法

MCULCD屏驱动方式 一、LCD简介二、直接采用8080时序驱动LCD三、采用FSMC&#xff08;模拟8080时序&#xff09;驱动LCD1&#xff0c;FSMC简介2&#xff0c;结构框图3&#xff0c;FMC 驱动 LCD 显示配置步骤 一、LCD简介 Liquid Crystal Display&#xff0c;即液晶显示器&#…

Linux连接文件那点事

什么是连接文件 将一个文件和另一个文件建立联系&#xff0c;分为硬链接和软连接&#xff08;符号连接&#xff09;。 硬链接 Linux中&#xff0c;所有的文件都有一个inode&#xff0c;这个东西就是文件的ID号&#xff0c;硬链接的方式就是通过这个inode来产生新的文件名来建…