QT 给.UI中的按钮添加点击效果,点击后改变透明度
创始人
2024-12-16 17:05:12
	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的动画框架会在动画完成时自动处理动画对象的清理工作。

相关内容

热门资讯

“无人家务”渐行渐近 记者 李 均 宋迎迎 从AI技术的持续突破,到各类AI产品与智能终端的加速落地,再到智慧生活场景的日...
苏州工业园区 2026年防灾减... 在第18个全国防灾减灾日到来之际,5月11日,苏州工业园区2026年防灾减灾宣传周启动仪式暨AI赋能...
【好物】雅诗兰黛第7代小棕瓶京... 全网 618 大促现已正式开始,全场均年度好价,有需求的小伙伴速抢哦: 京东无门槛红包 京东无门槛...
原创 1... 2011年4月底,郴州开往湖北的火车上,一名少年满头大汗地捂着腰部,低声呻吟。列车员和周围乘客焦急地...
Geekom Air12 20... 随着中国制造商在紧凑且高性能迷你电脑领域的崛起,Geekom已成为备受瞩目的品牌之一。此前,其AMD...