qt动画类学习
Qt动画类 QPropertyAnimation
显示动画
QPropertyAnimation *animation = new QPropertyAnimation(window(), "windowOpacity");
或者
QPropertyAnimation *animation= new QPropertyAnimation();
Animation->setTargetObject(window());
Animation->setPropertyName("windowOpacity");
第一个参数是需要进行动画的窗体,第二个参数是要进行的操作(渐变出现,移动位置,逐渐放大放小等功能)。
windowOpacity:逐渐出现和逐渐消失动画
//界面动画,改变透明度的方式出现0 - 1渐变
QPropertyAnimation *animation = new QPropertyAnimation(window(), "windowOpacity");
animation->setEasingCurve(QEasingCurve::NCurveTypes);//线性
animation->setDuration(1000);//为期1分钟完成
animation->setStartValue(0);//开始是全部隐藏
animation->setEndValue(1);//结束是全部显现
animation->start(QAbstractAnimation::DeleteWhenStopped);//结束时自动释放资源
移动动画
Pos:移动动画
//界面动画效果移动
QPropertyAnimation *animation = new QPropertyAnimation(m_bottomToolbar, "pos");
animation->setDuration(200);//0.2秒完成
animation->setEasingCurve(QEasingCurve::NCurveTypes);//线性
animation->setStartValue(QPoint((width() - m_bottomToolbar->width()) / 2, m_bottomToolbar->y()));//开始位置
animation->setEndValue(QPoint((width() - m_bottomToolbar->width()) / 2, height() - m_bottomToolbar->height() - 10));//结束位置
animation->start(QAbstractAnimation::DeleteWhenStopped);//结束时自动释放资源
放大缩小
size:放大或者缩小
QPropertyAnimation *animation=new QPropertyAnimation(window(), "size");
animation->setDuration(200);//时间0.2秒
QDesktopWidget* desktopWidget = QApplication::desktop();
QRect screenRect = desktopWidget->screenGeometry(); //屏幕区域
int w = screenRect.width();
int h = screenRect.height();
QSize a(window()->size());
animation->setStartValue(QSize(window()->size()*0.9));//初始大小
animation->setEndValue(QSize(w,h));//结束大小
animation->start(QAbstractAnimation::DeleteWhenStopped);//完成时回收资源
大小和位置的改变
geometry:大小和位置的改变
//大小和位置
/* 声明动画类,并将控制对象 this (this一定是继承自QObject的窗口部件) 以及属性名 "geometry" 传入构造函数 */
QPropertyAnimation* animation = nenw QPropertyAnimation(this, "geometry");
/* 设置动画持续时长为 2 秒钟 */
animation->setDuration(2000);
/* 设置动画的起始状态 起始点 (1,2) 起始大小 (3,4) */
animation->setStartValue(QRect(1, 2, 3, 4));
/* 设置动画的结束状态 结束点 (100,200) 结束大小 (300,400) */
animation->setsEndValue(QRect(100, 200, 300, 400));
/* 设置动画效果 */
animation->setEasingCurve(QEasingCurve::OutInExpo);
/* 开始执行动画 QAbstractAnimation::DeleteWhenStopped 动画结束后进行自清理(效果就好像智能指针里的自动delete animation) */
animation->stsart(QAbstractAnimation::DeleteWhenStopped);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧