Qt(QPropertyAnimation)实现头像边框阴影动态效果

头像框阴影动态效果图:
在这里插入图片描述
实现代码:
首先自定义控件属性

Q_PROPERTY(int iBorderRadius READ getBorderRadius WRITE setBorderRadius)

创建动画类和阴影效果类

	QPropertyAnimation m_ImageAnimation; //阴影动效化对象(动画类)
    QGraphicsDropShadowEffect m_ImageShadowEffect; //设置阴影对象

自定义属性get函数与set函数

	边框阴影动画波动效果实现函数
	int getBorderRadius() const;
	void setBorderRadius(const int radius);
	
	int TestUI::getBorderRadius() const
	{
		return m_borderRadius;
	}

	void TestUI::setBorderRadius(const int radius)
	{
		m_borderRadius = radius;

		m_ImageShadowEffect.setBlurRadius(m_borderRadius);
	}

最后通过QPropertyAnimation和QGraphicsDropShadowEffect 实现阴影动画效果

	设置边框阴影
	m_ImageShadowEffect.setColor(QColor(0, 0, 139));
	m_ImageShadowEffect.setOffset(0, 0);
	m_ImageShadowEffect.setBlurRadius(0);
	ui.label->setGraphicsEffect(&m_ImageShadowEffect);

	边框阴影动画实现
	m_ImageAnimation.setTargetObject(this);
	m_ImageAnimation.setDuration(2000);
	m_ImageAnimation.setPropertyName("iBorderRadius");
	m_ImageAnimation.setKeyValueAt(0, 1);
	m_ImageAnimation.setKeyValueAt(0.5, 40);
	m_ImageAnimation.setKeyValueAt(1, 1);
	m_ImageAnimation.setLoopCount(-1);
	m_ImageAnimation.start();

猜你喜欢

转载自blog.csdn.net/qq_36651243/article/details/102800598