void QSingleImageView::bestFit() { Q_D(QSingleImageView); QSize imageSize = d->image.size(); QSize size = viewport()->size(); int w = imageSize.width(), mw = size.width(); int h = imageSize.height(), mh = size.height(); double rw = 1.0*mw/w, rh = 1.0*mh/h, factor = 1; if (rw < 1 && rh > 1) factor = rw; else if (rw > 1 && rh < 1) factor = rh; else if (rw < 1 && rh < 1) factor = qMin(rw, rh); else factor = qMin(rw, rh); d->setZoomFactor(factor); }