qt 窗口背景色变色

来源:互联网 发布:有大秀的直播软件 编辑:程序博客网 时间:2024/06/06 09:07

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

}


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

0 0
原创粉丝点击