Qt用paintEvent绘制圆形图片、圆形头像
void RoundHeadImageWidget::paintEvent(QPaintEvent *event)
{
Q_UNUSED(event)
QPalette palette(this->palette());
palette.setColor(QPalette::Background, Qt::white);
this->setPalette(palette);
QPainter painter;
painter.begin(this);
painter.setRenderHint(QPainter::Antialiasing);
painter.setRenderHint(QPainter::SmoothPixmapTransform); // 抗锯齿
painter.setPen(Qt::NoPen);
painter.setBrush(Qt::NoBrush);
QPainterPath path;
path.addEllipse(130, 30 , 400, 400);
painter.setClipPath(path);
QPixmap pixMap(":/images/头像.jpg");
painter.drawPixmap(130,30 ,400,400,pixMap);
painter.setClipRect(this->rect());
painter.drawPath(path);
}
参考效果如下:
1.不带边框的圆形图片 painter.setPen(Qt::NoPen);
2.带绿色边框的圆形图片
QPen pen(QColor("#4CD964"),5,Qt::SolidLine,Qt::RoundCap,Qt::MiterJoin);
painter.setPen(pen);
painter.setBrush(Qt::NoBrush);