赞
踩
为了实现封装QWidget及其子类界面切换动画流程,满足开发过程中一键套用即可满足不同界面切换的效果,先展示切换效果:
其中包含库的封装,动画算法实现(需要持续新增)
对QWidget及QStatckWidget等类封装,便于动画接口调用等
先展示部分代码:
- #ifndef ANIMATIONSTACKEDWIDGET_H
- #define ANIMATIONSTACKEDWIDGET_H
-
- #include <QStackedWidget>
- #include <QVariant>
-
- class QPropertyAnimation;
- class AnimationStackedWidget : public QStackedWidget
- {
- Q_OBJECT
- public:
- explicit AnimationStackedWidget(QWidget *parent = 0);
- ~AnimationStackedWidget();
-
- protected:
- void paintEvent(QPaintEvent *);
-
- public slots:
- //前一页
- void next();
- //下一页
- void forward();
-
- void onAnimaFinish();
-
- private:
- void initWidgetsSize();
-
- private:
- bool _isAnimation; //是否正在动画
- int _widgetCount; //保存当前StackWidget里面的子成员数
- int _nextIndex; //下一个要切换的索引
- bool _next;
- int _m_currenAnimationType;
- };
-
- #endif // ANIMATIONSTACKEDWIDGET_H
AnimationStackedWidget 继承QStackedWidget,其中调用动画封装好的SDK即可实现相关动画。需要处理的无非就是paintevent函数
- void AnimationStackedWidget::paintEvent(QPaintEvent *e)
- {
- if( _isAnimation )
- {
- QPainter paint(this);
- //绘制下一个widget
- AnimationMin->doAnimationFunctionNext( _next,paint );
- //绘制当前Widget
- AnimationMin->doAnimationFunctionCur( _next,paint );
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。