1.需求
一:
实现侧边栏的隐藏与呈现
二:
使用侧边栏可以将一些不用的功能隐藏,使用的时候点击按钮以动画的方式弹出功能菜单,减少主界面控制数量,也使主界面更加美观。
2.使用到的类库QPropertyAnimation
QPropertyAnimation是Qt自带的动画类,该类可以实现简单的控制动画。比如对控件的移动,缩放,不透明度这些动画效果。
移动:
主要实现移动效果,比如从某个点移动到另一个点。
缩放:
实现缩放和移动效果,该属性可以实现控件的缩放,并且在缩放的基础上还能实现移动。
不透明度
实现控件的透明度设置
3.QPropertyAnimation构造函数解释
QPropertyAnimation(QObject *target, const QByteArray &propertyName, QObject *parent = Q_NULLPTR);
target:
若要使某个控件实现动画效果,需要在构造QPropertyAnimation类时将控件指针传入target。
propertyName:
常见的属性有位置:pos、几何尺寸:geometry,两者区别为在设置位置时前者采用QPoint,后者采用QRect。
parent:
父类指针
4.QPropertyAnimation常用方法
setDuration(int msecs):
设置动画的持续时间,单位为毫秒
setStartValue(const QVariant &value):
设置动画的起始值
setEndValue(const QVariant &value):
设置动画的结束值
start(QAbstractAnimation::DeletionPolicy policy = KeepWhenStopped):
启动动画
stop():
停止动画
pause():
暂停动画
resume():
恢复动画
5.实现效果
看资源绑定
6.核心代码
//隐藏
double widgetW = ui->widget->width();
QPropertyAnimation *propertyAnimation = new QPropertyAnimation(this,"pos");
propertyAnimation->setEasingCurve(QEasingCurve::InOutCubic);
propertyAnimation->setDuration(1000);
propertyAnimation->setStartValue(pos());
propertyAnimation->setEndValue(pos() - QPointF(widgetW,0).toPoint());
propertyAnimation->start();
ui->pushButton->setText("显示");
btn->setProperty("IsVisble",false);
显示只需要将开始和结束的值互换或者设置属性setDirection(),正方向:mation::Forward;反方向:mation::Backward。