使用QGraphicsView.fitInView( ...),我如何预测是否需要滚动条?

0 人关注

我有一个PyQt5项目,我在一个QGraphicsScene中创建复杂的几何对象,并在QGraphicsView中显示它们--标准的东西。

当我在一个大的(1920x1080)显示器上运行我的代码时,场景显示得很好,没有滚动条。然而,当我在1366x768的设备上运行时,视口太小了,我只能看到物体的一部分,还有滚动条。

(在这两种情况下,窗口开始时都是最大化的)。

为了解决这个问题,我在窗口初始化时添加了以下代码。

my_view.fitInView(my_scene.sceneRect(), Qt.KeepAspectRatio)

而这在小显示器上工作得很好。然而,在大显示器上,视口现在变得更小了,场景也比以前小了。

因此,我试着提前预测场景是否能容纳在视图中,并打印出一些尺寸来尝试解决这个问题。

print("A", my_scene.sceneRect().size())
print("B", my_view.size())
print("C", my_view.viewport().size())

而我得到了这个。

A PyQt5.QtCore.QSizeF(227.0, 702.0)