16,801
社区成员




在QLabel上加载图片,想将图片设置为圆角,但是设置了之后锯齿严重,加了Antialiasing属性也是一样不行,下面是我的代码:
QPixmap QLabelUtils::pixmapToRound(QPixmap& src, int x, int y, int width, int height, int radius) {
if (src.isNull()) {
return QPixmap();
}
QSize size(width, height);
QBitmap mask(size);
QPainter painter(&mask);
painter.setRenderHints(QPainter::Antialiasing|QPainter::SmoothPixmapTransform);
painter.fillRect(x, y, size.width(), size.height(), Qt::white);
painter.setBrush(QColor(0, 0, 0));
QPainterPath path;
path.addRoundedRect(x, y, size.width()-1, size.height()-1, radius, radius);
path.translate(0.5, 0.5);
painter.drawPath(path);
QPixmap image = src.scaled(size, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
image.setMask(mask);
return image;
}
调用这个方法之后,图片是变圆角了,但是有锯齿,抗锯齿也设置了,但是不起作用,求教怎么解决这个问题?
我的Qt版本是6.4。
这个问题太折磨人了,有没有哪位大神帮个忙。
我也发现了这个问题,QPainter画的圆角远没有设置样式表的圆角来的圆润,而且设置了抗锯齿也没发现起作用
QPixmap image(width, height);
image.fill(Qt::transparent);
QPainter painter(&image);
painter.setRenderHints(QPainter::Antialiasing|QPainter::SmoothPixmapTransform);
painter.setBrush(QBrush(src));
painter.drawRoundedRect(x, y, width, height, radius, radius);
return image;