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