我们先看效果:
点开“开始”:蝴蝶的透明度从0.5逐渐增加到1,然后又从1逐渐减少到0.5,这样不断循环变化。
点击“结束”按钮,动画停止。
其实这个用属性动画QPropertyAnimation和串行动画组QSequentialAnimationGroup,以及Q_PROPERTY,一起来做,非常简单。
首先我们需要一个变量,来存储图片的透明度:
double m_imageOpacity;
需要它的get和set方法
写法一:
Q_PROPERTY(double imageOpacity READ imageOpacity WRITE setImageOpacity)
private:
double imageOpacity() const
{
return m_imageOpacity;
}
void setImageOpacity(double value)
{
m_imageOpacity = value;
}
private:
double m_imageOpacity;
写法二:
Q_PROPERTY(double imageOpacity MEMBER m_imageOpacity)
private:
double m_imageOpacity;
两种写法等效,这里我们用写法二。
新建一个基于QWidget的工程
全家福
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
QT_BEGIN_NAMESPACE
namespace Ui {
class Widget; }
QT_END_NAMESPACE
class QSequentialAnimationGroup;
class QPropertyAnimation;
class Widget : public QWidget
{
Q_OBJECT
Q_PROPERTY(double imageOpacity MEMBER m_imageOpacity)
public:
Widget(QWidget *parent =