class m_testwidget : public QWidget
{
Q_OBJECT
Q_PROPERTY(QColor color READ color WRITE setColor)
public:
explicit m_testwidget(QWidget *parent = 0);
void setColor(const QColor &color);
~m_testwidget();
const QColor &color()
{
return m_backgroundColor;
}
signals:
public slots:
protected:
void paintEvent(QPaintEvent *);
private:
QColor m_backgroundColor;
};
这是对类的声明,color是类的一个属性
m_testwidget::m_testwidget(QWidget *parent) : QWidget(parent)
{m_backgroundColor = QColor("#2abf1d");
QPropertyAnimation *m_toOrange = new QPropertyAnimation(this, "color");
m_toOrange->setDuration(5000);
m_toOrange->setStartValue(QColor("#2abf1d"));
m_toOrange->setEndValue(QColor("#FFA500"));
m_toOrange->start();
}
void m_testwidget::setColor(const QColor &color)
{
m_backgroundColor = color;
update();
}
void m_testwidget::paintEvent(QPaintEvent *)
{
QPainter painter(this);
painter.setPen(Qt::NoPen);
painter.setBrush(m_backgroundColor);
painter.drawRect(rect());
}
执行就会看到背景色逐渐变化的过程