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

Qt实现几何、颜色、不透明度动画

Qt实现几何、颜色、不透明度动画

在一般的项目开发中,我们使用动画效果要比使用单纯的文字又更好地人机交互的效果,比如说,我们做一个温度显示的窗口如果里面只显示温度的数字,那就显得非常的单调,如果我们使用动画效果和数字来实现,是不是就很不错。

那我们这章就来讲讲动画的制作效果!

 1.UI界面设计

直接放我话的吧

这是他们的属性:

2.头文件

实现动画效果首先要有我们的头文件

#include"QGraphicsColorizeEffect"
#include"QGraphicsOpacityEffect"
  • QGraphicsColorizeEffect:这个类允许你对图形项进行颜色化处理,即你可以将图形项的所有像素转换为另一种颜色(或色调),同时保持原始图形的形状和透明度不变。这对于实现各种视觉效果(如夜间模式、强调特定元素等)非常有用。

  • QGraphicsOpacityEffect:这个类允许你改变图形项的透明度。通过调整透明度,你可以使图形项完全可见、半透明或完全不可见。这对于创建淡入淡出效果、覆盖层或简单地调整元素的可视性非常有用。

 3.widget.h文件

我们在我们的.h文件中声名一下:(记得要加头文件)

#include"QPropertyAnimation"private:Ui::Widget *ui;QPropertyAnimation *propertyAnimation;QPropertyAnimation *propertyAnimation1;QPropertyAnimation *propertyAnimation2;};

4.几何动画

几何动画就是让他实现从一个地方的一个大小变化到另一个地方的另一个大小。比如说我的初始位置在左上角,大小是10*20,然后设置最终位置是右下角,大小是100*300。大致就是这样的一个效果,那么我们接下来就来讲讲是如何实现的吧!

1.编写代码

接下来我们来实现一下:

//几何属性动画初始化propertyAnimation = new QPropertyAnimation(ui->geometryWidget,"geometry");//设置动画的起始值propertyAnimation->setStartValue(QRect(0,0,100,100));//设置中间值propertyAnimation->setKeyValueAt(0.1,QRect(500,100,100,200));//结束值propertyAnimation->setEndValue(QRect(600,500,200,200));//设置时间propertyAnimation->setDuration(2000);//设置动画循环周期propertyAnimation->setLoopCount(11);//设置动画的曲线propertyAnimation->setEasingCurve(QEasingCurve::OutInQuint);

我们使用按钮来控制他的开始,还是转到槽,这个我就不截图了,直接上代码(一定是在UI界面中转到槽,因为这样会自动在widget.h文件中生成声名函数

void Widget::on_pushButton_2_clicked()
{propertyAnimation->start();
}

对,就这么简单!!

4.颜色动画

就是设置颜色的起始颜色和最终颜色还有变化时间,然后系统会自动的变化;

1.编写代码

 QGraphicsColorizeEffect *graphicsColorizeEffect= new QGraphicsColorizeEffect(this);ui->colorwidget->setGraphicsEffect(graphicsColorizeEffect);propertyAnimation1 = new QPropertyAnimation(graphicsColorizeEffect,"color");propertyAnimation1->setStartValue(QColor(Qt::red));propertyAnimation1->setEndValue(QColor(Qt::blue));propertyAnimation1->setDuration(2000);

按钮的转到槽的代码(一定是在UI界面中转到槽,因为这样会自动在widget.h文件中生成声名函数

void Widget::on_pushButton_clicked()
{propertyAnimation1->start();
}

5.不透明度动画

这个看一下文字都大概能猜到它是什么意思吧,它使用的频率还是比较高的,比如说在做智能家居的时候做个呼吸灯,又或者~~~~~~~~~~~~等等。哈哈哈哈

1.代码编写

QGraphicsOpacityEffect *graphicsOpacityEffect = new QGraphicsOpacityEffect(this);ui->butoumin->setGraphicsEffect(graphicsOpacityEffect);propertyAnimation2 = new QPropertyAnimation(graphicsOpacityEffect,"opacity");propertyAnimation2->setStartValue(0.0);propertyAnimation2->setEndValue(1.0);propertyAnimation2->setDuration(2000);

其实实现的代码逻辑都是一样的,

按钮的转到槽的代码(一定是在UI界面中转到槽,因为这样会自动在widget.h文件中生成声名函数

void Widget::on_pushButton_3_clicked()
{propertyAnimation2->start();
}


http://www.mrgr.cn/news/20707.html

相关文章:

  • 解决商店汽水兑换问题——利用贪心算法与循环结构
  • 4-2.Android Camera 之预览图像编码模板(SurfaceView)
  • zabbix4.0创建自定义监控项
  • 【Boost】Asio库学习(二)
  • C# 排序算法之快速排序
  • 利用全核范数去噪技术优化彩色图像处理
  • Electron32-Vue3OS桌面管理os模板|vite5+electron32+arco后台os系统
  • Vue实现双向数据绑定
  • 信息安全保障
  • 支持图片和视频分割,SAM2最新分割一切大模型分享
  • 什么是视频矩阵
  • Windows10彻底关闭自带的防病毒功能
  • Java 使用 Redis
  • 详解大模型多轮对话的数据组织形式
  • [数据集][目标检测]电动车头盔佩戴检测数据集VOC+YOLO格式4235张5类别
  • 数据 结构(内核链表)
  • 高职院校全栈式信创实训基地解决方案
  • .NET 8月份红队武器库和资源集合
  • 机器学习之 PCA降维
  • 详细分析TypeScript 中的可选参数与属性:用问号 ? 提升代码灵活性