2015-06-20 91 views
0

我正在开发一个图形用户界面使用QTDesigner的一些图像处理任务。我在网格布局中有两个图形视图。两者都应显示图像,稍后我将添加叠加层。PyQt4:图形视图和像图大小

我创建我的Pixmap img_pixmap并将其添加到我的场景中。这个场景然后被添加到我的图形视图。由于我的图像比我的屏幕尺寸大得多,我应用fitInView()。在代码:

self.img_pixmap_p = self.img_scene.addPixmap(img_pixmap) 
self.img_view.setScene(self.img_scene) 
self.img_scene.setSceneRect(QtCore.QRectF()) 
self.img_view.fitInView(self.img_scene.sceneRect(), QtCore.Qt.KeepAspectRatio) 

到目前为止,一切都很好,但我要如何摆脱在我的图像视图空白的?理想情况下,我希望我的像素图使用图形视图的整个宽度并保持纵横比,图形视图应该相应地调整其高度。关于如何以直接的方式实现这一点的任何想法?

这里的图像得到的是什么,我得到一个更好的主意:

Nobody likes white borders

正如你所看到的,有白色边框,这是我想避免的。

+0

'QGraphicsView'默认情况下根据场景大小无法调整其大小。您需要手动计算最佳高度,并使用'view.setFixedHeight(...)'进行设置。 –

回答

0

好吧,我照建议由帕维尔:

img_aspect_ratio = float(pixmap.size().width())/pixmap.size().height() 
width = img_view.size().width() 
img_view.setFixedHeight(width/img_aspect_ratio) 
img_view.fitInView(img_scene.sceneRect(), QtCore.Qt.KeepAspectRatio) 

它,当你在每个resizeEvent()称之为正常工作。