在项目中遇到一个问题,具体要求是搜索框点击搜索按钮,当搜索框出现时,向右移动慢慢的出现,消失时向左动画效果慢慢地消失。问题如下:
-
动画出现和消失的时候是有边界的,怎么做出在边界消失和出现的行为?
有两种处理方式,一种是在lineedit外面再套一个widget,设置animation的pos属性。这样当lineedit移动出widget的时候就隐藏了。另一种方式是设置animation的长度属性。本文主要针对的一种方式实现展开,第二种并没有去验证。 -
最开始搜索框是不可见的,出现后设置为可见,消失的时候要设回为不可见,那么消失的动画还怎么显示?
在lineedit缩回去的时候,绑定animation的finish信号,当animation完成的时候再设置不可见。
Qt移动动画相关知识:
- QPropertyAnimation:属性动画,可以参考qt 窗口动画
- QGraphicsOpacityEffect:窗口透明度设置类,继承自QGraphicsEffect
- QGraphicsDropShadowEffect:窗口阴影,继承自QGraphicsEffect
- QGraphicsBlurEffect:滤镜,继承自QGraphicsEffect
- QGraphicsColorizeEffect:着色,继承自QGraphicsEffect
QPropertyAnimation* animation = new QPropertyAnimation(qlineedit,"pos");
//这里的坐标都是动画相对于他的目标对象当前坐标的相对坐标
animation->setStartValue(QPoint(-qlineedit->width(),0);
animation->