在使用QGraphicsView打开图片的过程当中,发现若是图片大小大于view大小时,图片没法彻底显示,且view周边不出现滚动条,致使没法查看图片全貌,相关代码以下:this
QGraphicsScene *scene = new QGraphicsScene(this); QGraphicsView *graphicsView = new QGraphicsView(); graphicsView->setScene(scene); scene->setSceneRect(-200,-200,400,400); graphicsView->setMinimumSize(400,400);
图片显示以下:.net
上图左侧,是view区域,其中显示的图片只是我打开图片的一部分,且周围没有滚动条,没法查看图片全貌。code
QGraphicsScene是QGraphicsView的逻辑空间,QGraphicsView只是用来显示QGraphicsScene中部分或所有内容的显示控件,至关于它的窗口。由上面的代码看出,我把scene的大小已经固定了。 当图片的大小大于scene的大小时,那么scene只能放下图片的一部分,因此不管view怎么变,它所能显示的始终只是scene中的内容,因此它没法显示图片的全貌。但错不在它,而在于scene。图片
既然scene是万恶之源,那就改变scene的大小。经过在每次打开一张图片时根据图片大小动态设定scene的大小,问题就得以解决。相关代码以下:it
QGraphicsScene *scene = new QGraphicsScene(this); QGraphicsView *graphicsView = new QGraphicsView(); graphicsView->setScene(scene); QPixmap pix(); ...//此处省略代码为打开一张图片的代码 scene->setSceneRect(-pix.width() / 2,-pix.height() / 2,pix.width(),pix.height());//根据图片大小动态设定scene大小 graphicsView->setMinimumSize(400,400);map
这时图片显示以下:  能够看到,较大图片显示时,view周围出现了滚动条,能够经过滚动条查看图片全貌。 那么打开一张小图片会怎么样呢?  能够看到,显示正常,同时view周围也没出现滚动条。 问题解决!