自学内容网 自学内容网

QT 给.UI中的按钮添加点击效果,点击后改变透明度

QGraphicsOpacityEffect * m_pGraphicsOpacityEffect;
    QPropertyAnimation * m_pOpacityAnimation;

    m_pGraphicsOpacityEffect = new QGraphicsOpacityEffect(ui->scannerBtn);
    m_pGraphicsOpacityEffect->setOpacity(1.0);
    ui->scannerBtn->setGraphicsEffect(m_pGraphicsOpacityEffect);

    m_pOpacityAnimation = new QPropertyAnimation(m_pGraphicsOpacityEffect,"opacity",this);
    m_pOpacityAnimation->setDuration(100);
    m_pOpacityAnimation->setStartValue(0.7);
    m_pOpacityAnimation->setEndValue(1.0);
    m_pOpacityAnimation->start(QAbstractAnimation::DeleteWhenStopped);

这段代码主要用于给按钮添加一个透明度变化的动画效果。这里通过QGraphicsOpacityEffect和QPropertyAnimation类来实现。

创建QGraphicsOpacityEffect对象:

m_pGraphicsOpacityEffect = new QGraphicsOpacityEffect(ui->scannerBtn);
这行代码创建了一个QGraphicsOpacityEffect对象,并将其与界面上的scannerBtn按钮相关联。QGraphicsOpacityEffect是一个图形效果类,用于改变其应用到的控件的透明度。通过将这个效果应用到scannerBtn上,我们可以改变按钮的透明度,而不会影响到按钮的其他绘制属性(如边框、背景色等)。

设置初始透明度:

m_pGraphicsOpacityEffect->setOpacity(1.0);
这行代码设置m_pGraphicsOpacityEffect1的初始透明度为1.0,即完全不透明。这是为了确保在动画开始之前,按钮是完全可见的。

将效果应用到按钮上:

ui->scannerBtn->setGraphicsEffect(m_pGraphicsOpacityEffect);
通过这行代码,将之前创建的QGraphicsOpacityEffect对象应用到scannerBtn按钮上。这样,对m_pGraphicsOpacityEffect1所做的任何更改(如透明度变化)都会反映到按钮上。

创建QPropertyAnimation对象:

m_pOpacityAnimation = new QPropertyAnimation(m_pGraphicsOpacityEffect, “opacity”, this);
这行代码创建了一个QPropertyAnimation对象,用于对m_pGraphicsOpacityEffect1的opacity属性进行动画处理。动画的父对象设置为当前对象(this),这通常是为了确保在父对象被销毁时,动画对象也能被适当地清理。

配置动画属性:

setDuration(100);:设置动画的持续时间为100毫秒。
setStartValue(0.7);:设置动画开始时的值为0.7,即按钮的透明度将从0.7开始变化。
setEndValue(1.0);:设置动画结束时的值为1.0,即按钮的透明度将变化到完全不透明。

启动动画:

m_pOpacityAnimation->start(QAbstractAnimation::DeleteWhenStopped);
最后,通过调用start()方法启动动画。传递给start()方法的参数QAbstractAnimation::DeleteWhenStopped是一个枚举值,表示当动画停止时,动画对象应该被删除。这有助于避免内存泄漏,因为Qt的动画框架会在动画完成时自动处理动画对象的清理工作。


原文地址:https://blog.csdn.net/ren365880/article/details/140556462

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!