Qt界面切换动画SDK--开篇介绍

文章介绍了如何封装QStackedWidget及其子类,以实现界面切换动画,通过继承并重写paintEvent方法,配合动画SDK,实现在切换时的动画效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       为了实现封装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 );
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值