QPixmap myGrab(QWidget *target, const QRect &rect) { if (!cRetina()) return target->grab(rect); if (target->testAttribute(Qt::WA_PendingResizeEvent) || !target->testAttribute(Qt::WA_WState_Created)) { _sendResizeEvents(target); } qreal dpr = App::app()->devicePixelRatio(); QPixmap result(rect.size() * dpr); result.setDevicePixelRatio(dpr); result.fill(Qt::transparent); target->render(&result, QPoint(), QRegion(rect), QWidget::DrawWindowBackground | QWidget::DrawChildren | QWidget::IgnoreMask); return result; }
void myEnsureResized(QWidget *target) { if (target && (target->testAttribute(Qt::WA_PendingResizeEvent) || !target->testAttribute(Qt::WA_WState_Created))) { _sendResizeEvents(target); } }