QPropertyAnimation动画效果

来源:微信公众号「编程学习基地」

文章目录

平移

/**
 * @brief 平移测试
 */
void Widget::on_ptn_start_clicked()
{
    qDebug()<<"on_ptn_start_clicked";
    //pos
    QPropertyAnimation *pPosAnimation = new QPropertyAnimation(ui->posButton, "pos");
    pPosAnimation->setDuration(3000);
    pPosAnimation->setStartValue(QPoint(ui->posButton->x(), ui->posButton->y()));
    pPosAnimation->setEndValue(QPoint(ui->posButton->x() + 300, ui->posButton->y()));
    pPosAnimation->setEasingCurve(QEasingCurve::InOutQuad);
    pPosAnimation->start();
}

缩放

/**
 * @brief 缩放测试
 */
void Widget::on_btn_zoom_clicked()
{
    QPropertyAnimation *pScaleAnimation = new QPropertyAnimation(ui->pushButton_zoom, "geometry");
    pScaleAnimation->setDuration(1000);
    //scale
    if(m_Enlarge){
        //放大
        m_Enlarge = false;
        pScaleAnimation->setStartValue(ui->pushButton_zoom->geometry());
        pScaleAnimation->setEndValue(QRect(ui->pushButton_zoom->x(),ui->pushButton_zoom->y(),
                                           ui->pushButton_zoom->width()*5, ui->pushButton_zoom->height()*5));
        ui->btn_zoom->setText("缩小");
    }
    else {
        //缩小
        m_Enlarge = true;
        pScaleAnimation->setStartValue(ui->pushButton_zoom->geometry());   //QRect(10, 410, 250, 200)

        pScaleAnimation->setEndValue(QRect(ui->pushButton_zoom->x(),ui->pushButton_zoom->y(),
                                           ui->pushButton_zoom->width()/5, ui->pushButton_zoom->height()/5));
        ui->btn_zoom->setText("放大");
    }
    pScaleAnimation->start();
}

透明

/**
 * @brief 窗口透明演示
 */
void Widget::on_btn_opacity_clicked()
{
    //opacity
    QGraphicsOpacityEffect *pButtonOpacity = new QGraphicsOpacityEffect(this);
    QPropertyAnimation *pOpacityAnimation = new QPropertyAnimation(pButtonOpacity, "opacity");
    if(m_Display){
        //设置展示
        pButtonOpacity->setOpacity(0);
        ui->pushButton_opacity->setGraphicsEffect(pButtonOpacity);

        pOpacityAnimation->setDuration(1000);
        pOpacityAnimation->setStartValue(0);
        pOpacityAnimation->setEndValue(1);
        m_Display = false;
        ui->btn_opacity->setText("透明");
    }
    else {
        //设置透明
        pButtonOpacity->setOpacity(1);
        ui->pushButton_opacity->setGraphicsEffect(pButtonOpacity);

        pOpacityAnimation->setDuration(1000);
        pOpacityAnimation->setStartValue(1);
        pOpacityAnimation->setEndValue(0);
        m_Display = true;
        ui->btn_opacity->setText("显示");
    }
    pOpacityAnimation->start();
}

注意!注意!注意

QGraphicsEffect 的子类(QGraphicsOpacityEffect,QGraphicsDropShadowEffect)只能在一个QWidget中安装一次 再次调用 setGraphicsEffect 时 之前安装的效果将被卸载

也就是透明效果和上篇讲解的阴影效果不能同时出现在一个QWidget中

上一篇:QGraphicsDropShadowEffect添加投影

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DeRoy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值