QPixmap PixmapToRound(const QPixmap &src, int radius)
{
if (src.isNull()) {
return QPixmap();
}
QSize size(2*radius, 2*radius);
QBitmap mask(size);
QPainter painter(&mask);
painter.setRenderHint(QPainter::Antialiasing);
painter.setRenderHint(QPainter::SmoothPixmapTransform);
painter.fillRect(0, 0, size.width(), size.height(), Qt::white);
painter.setBrush(QColor(0, 0, 0));
painter.drawRoundedRect(0, 0, size.width(), size.height(), 99, 99);
QPixmap image = src.scaled(size);
image.setMask(mask);
return image;
}
// 窗口top圆角处理
int radius = 4;
QSize maskSize(this->size().width(), this->size().height() + radius);
QBitmap mask(maskSize);
QPainter maskPainter(&mask);
maskPainter.setRenderHint(QPainter::Antialiasing);
maskPainter.setRenderHint(QPainter::SmoothPixmapTransform);
maskPainter.fillRect(this->rect(), Qt::white);
maskPainter.setBrush(QColor(0, 0, 0));
maskPainter.drawRoundedRect(QRect(QPoint(0, 0), maskSize), radius, radius);
this->setMask(mask);