From 615dc2294a7b12344e3e88cde481326c9e94c279 Mon Sep 17 00:00:00 2001 From: Timur Pocheptsov Date: Tue, 21 Oct 2014 18:23:16 +0200 Subject: QWidget: render() in correct resolution on retina Factor in the target devicePixelRatio when setting the size (and devicePixelRatio) on the target pixmap. Task-number: QTBUG-41682 Change-Id: I16a85cf7ba0adb6d6c05e9de4fd44ff5533b5f60 Reviewed-by: Timur Pocheptsov --- src/widgets/kernel/qwidget.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/widgets/kernel/qwidget.cpp b/src/widgets/kernel/qwidget.cpp index 559e4ae43f..e1053b4add 100644 --- a/src/widgets/kernel/qwidget.cpp +++ b/src/widgets/kernel/qwidget.cpp @@ -5352,7 +5352,10 @@ void QWidgetPrivate::render_helper(QPainter *painter, const QPoint &targetOffset if (size.isNull()) return; - QPixmap pixmap(size); + const qreal pixmapDevicePixelRatio = qreal(painter->device()->devicePixelRatio()); + QPixmap pixmap(size * pixmapDevicePixelRatio); + pixmap.setDevicePixelRatio(pixmapDevicePixelRatio); + if (!(renderFlags & QWidget::DrawWindowBackground) || !isOpaque) pixmap.fill(Qt::transparent); q->render(&pixmap, QPoint(), toBePainted, renderFlags); -- cgit v1.2.3