qt画一朵花

发布于:2025-04-22 ⋅ 阅读:(15) ⋅ 点赞:(0)

 希望大家的生活都更加美好,画一朵花送给大家

 

效果图

void FloatingArrowPubshButton::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);
    painter.setRenderHints(QPainter::Antialiasing);

    QPen pen;
    pen.setColor("green");
    pen.setWidth(5);


    QBrush brush;
    brush.setColor("red");
    brush.setStyle(Qt::SolidPattern);
    painter.setPen(pen);
    painter.setBrush(brush);

    painter.drawLine(150, 300, 150, 500);

    int flowerCount{6};
    int radius{50};
    for(int i{0};i<flowerCount;i++)
    {
        painter.save();
        painter.translate(150, 300);
        painter.rotate((360.0/flowerCount)*i);
        painter.drawEllipse(-radius/2,-radius,radius,radius*2);
        painter.restore();

    }


}

2进一步提升1效果,让花在鼠标触碰到的时候发生变化

效果如下所示,点击后逐渐变成紫色

#include "floatingarrowpubshbutton.h"
#include <QPainter>
#include <QColor>
#include <QRect>
#include <QEvent>
FloatingArrowPubshButton::FloatingArrowPubshButton() {
    animation_normal=new QPropertyAnimation(this, "m_Tomeido");
    animation_normal->setDuration(300);
    animation_normal->setStartValue(m_Tomeido);
    animation_normal->setEndValue(255);
    animation_normal->setEasingCurve(QEasingCurve::Linear);

    // animation_parss=new QPropertyAnimation(this, "m_1");
    // animation_parss->setDuration(3000);
    // animation_parss->setStartValue(255);
    // animation_parss->setEndValue(100);
    // animation_parss->setEasingCurve(QEasingCurve::Linear);

    connect(animation_normal, &QPropertyAnimation::valueChanged, this, [this](const QVariant &value) {
        setTomeido(value.toInt());
        update();
    });

    // connect(animation_parss, &QPropertyAnimation::valueChanged, this, [this](const QVariant &value) {
    //     update();
    // });

}

void FloatingArrowPubshButton::setTomeido(int newTomeido)
{
        if (m_Tomeido == newTomeido)
            return;
        m_Tomeido = newTomeido;
}

void FloatingArrowPubshButton::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);
    painter.setRenderHints(QPainter::Antialiasing);

    qDebug()<<"m_Tomeido  "<<m_Tomeido;
    QPen pen;
    pen.setColor(QColor(255, 0,m_Tomeido,255 ));
    pen.setWidth(5);


    QBrush brush;
    brush.setColor(QColor(255, 0, 0, 127));
    brush.setStyle(Qt::SolidPattern);
    painter.setPen(pen);
    painter.setBrush(brush);

    painter.drawLine(150, 300, 150, 500);

    int flowerCount{6};
    int radius{50};
    for(int i{0};i<flowerCount;i++)
    {
        painter.save();
        painter.translate(150, 300);
        painter.rotate((360.0/flowerCount)*i);
        painter.drawEllipse(-radius/2,-radius,radius,radius*2);
        painter.restore();

    }

}

bool FloatingArrowPubshButton::event(QEvent *e)
{
    if(e->type()==QEvent::Enter)
    {
        animation_normal->setDirection(QPropertyAnimation::Forward);
        animation_normal->start();
    }
    if(e->type()==QEvent::Leave)
    {
        animation_normal->setDirection(QPropertyAnimation::Backward);
        animation_normal->start();
    }
    return QPushButton::event(e);
}

 

 


网站公告

今日签到

点亮在社区的每一天
去签到