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);  
posted @ 2022-03-03 20:06  dependon  阅读(102)  评论(0编辑  收藏  举报