StyleHelper: fix floating-point DPR icon pixelated

set the DPR as a floating point number for the pixmap.

Change-Id: I354e27556dbd8a0d53cfc3e0c2b708f06406aaf5
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
Mike Chen
2023-11-02 09:26:17 +08:00
parent 89da353746
commit 10a390c3d2

View File

@@ -545,7 +545,7 @@ void StyleHelper::drawIconWithShadow(const QIcon &icon, const QRect &rect,
QPainter *p, QIcon::Mode iconMode, int dipRadius, const QColor &color, const QPoint &dipOffset)
{
QPixmap cache;
const int devicePixelRatio = p->device()->devicePixelRatio();
const qreal devicePixelRatio = p->device()->devicePixelRatioF();
QString pixmapName = QString::fromLatin1("icon %0 %1 %2 %3")
.arg(icon.cacheKey()).arg(iconMode).arg(rect.height()).arg(devicePixelRatio);
@@ -557,7 +557,7 @@ void StyleHelper::drawIconWithShadow(const QIcon &icon, const QRect &rect,
// pixels.
QWindow *window = dynamic_cast<QWidget*>(p->device())->window()->windowHandle();
QPixmap px = icon.pixmap(window, rect.size(), iconMode);
int radius = dipRadius * devicePixelRatio;
int radius = int(dipRadius * devicePixelRatio);
QPoint offset = dipOffset * devicePixelRatio;
cache = QPixmap(px.size() + QSize(radius * 2, radius * 2));
cache.fill(Qt::transparent);