qt画一朵花
希望大家的生活都更加美好,画一朵花送给大家
效果图
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);
}