可以考虑使用图片的缩放来做,
我是这样做的,
    resize(((200*m_file_index)%1280),((100*m_file_index)%720));
        update(0,0,width(),height());
{
    Q_UNUSED(pEvent);
    double wscale = 1.0;
    double hscale = 1.0;
    
    double pixwidth = static_cast<double>(m_image.width());
    double pixheight = static_cast<double>(m_image.height());
    double showwidth = static_cast<double>(width());
    double showheight = static_cast<double>(height());
    double Wscalerate = pixwidth / showwidth;
    double Hscalerate = pixheight / showheight;
    double compare = (Wscalerate > Hscalerate ? Wscalerate : Hscalerate);
    QRect _rect( showwidth/2.0 - pixwidth/compare/2.0,
                showheight/2.0- pixheight/compare/2.0,
                pixwidth/compare,
                pixheight/compare);
    QRect _midrect( (showwidth/2.0-pixwidth/2.0),
                   (showheight/2.0-pixheight/2.0),
                   pixwidth,
                   pixheight );
    QPainter painter(this);   
    painter.save();
    painter.translate(showwidth/2.0, (showheight/2.0));
    painter.scale(wscale, hscale);
    painter.translate(-(showwidth/2), -(showheight/2.0));
    if (compare < 1.0)
        painter.drawImage(_midrect, m_image);
    else
        painter.drawImage(_rect, m_image);
     
    painter.restore();
    //QPainter p(this);
    //p.drawImage((SCREEN_WIDTH-m_image.width())/2, (SCREEN_HEIGHT-m_image.height())/2,m_image);
}