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

news/2025/7/8 20:08:52/

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; }