模糊效果

实现
void Button::paintEvent(QPaintEvent *event)
{
QColor bg;
if (isEnabled())
{
if (isDown())
{
bg.setRgb(78, 131, 253);
}
else
{
bg.setRgb(51, 112, 255);
}
}
else
{
bg.setRgb(100, 106, 115);
}
QPainter painter(this);
painter.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing | QPainter::HighQualityAntialiasing);
painter.setPen(Qt::transparent);
painter.setBrush(bg);
painter.drawRoundedRect(rect(), 8, 8);
painter.setPen(palette().buttonText().color());
/** 模糊效果 */
QGraphicsBlurEffect *blur = new QGraphicsBlurEffect(this);
blur->setBlurRadius(1.5);
QGraphicsScene scene(this);
QGraphicsPixmapItem item;
QPixmap img(width(), height());
img.fill(Qt::transparent);
QPainter p_img;
p_img.begin(&img);
p_img.setPen(Qt::red);
QFont ff;
ff.setPixelSize(32);
p_img.setFont(ff);
p_img.drawText(img.rect(), Qt::AlignCenter, text());
p_img.end();
item.setPixmap(img);
item.setGraphicsEffect(blur);
scene.addItem(&item);
scene.render(&painter);
event->accept();
}