【问题标题】:PyQt4: Graphics View and Pixmap SizePyQt4:图形视图和像素图大小
【发布时间】:2015-09-06 05:43:36
【问题描述】:

我正在为一些图像处理任务使用 QTDesigner 开发一个 GUI。我在网格布局中有两个相互下方的图形视图。两者都应该显示图像,稍后我将添加叠加层。

我创建了我的像素图 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)

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

这里有一张图片可以更好地了解我得到了什么:

如您所见,我想避免出现白色边框。

【问题讨论】:

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

标签: python qt pyqt4 qgraphicsview qpixmap


【解决方案1】:

好的,我按照 Pavel 的建议做了:

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() 中调用它时,它工作正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多