qt 窗口背景色变色

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());

}


执行就会看到背景色逐渐变化的过程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值