2013-10-28 127 views
5

为什么这样的:的QGraphicsView fitInView利润率

graphics_view->fitInView(scene->sceneRect(), Qt::KeepAspectRatio); 

没有达到预期效果?它不适合现场正确,显示周围的利润。

+3

添加最小代码示例和屏幕截图,以及它与预期的不同之处。 –

回答

2

我想出了问题所在,它在this question中有描述。问题的主要原因是您不应该在显示窗体之前调用fitInView。

+0

实际上它取决于你的意思只是利润率,我想,因为你也问过这个问题,它可能是你链接的问题中的这些巨大的问题。无论如何,您可以在显示表单之前调用fitInView。 –

0

从文档: -

RECT必须在现场RECT内;否则,fitInView()不能保证整个矩形是可见的。

也...

RECT将在视图中居中,如果不适合不放呢。

最后

如果矩形是空的,或者如果视口太小,此功能将不起作用。

3

原因是这样的: https://bugreports.qt.io/browse/QTBUG-42331 - 请在qt bug跟踪器上对它进行投票来提高优先级。

简而言之,fitInView具有硬编码的边距,这可能会导致各种破坏 - 其中最小的是现在你失去了几个像素的显示区域,也可能会强制不必要的重新缩放。

您可以通过重新实现fitInView来解决问题,基于现有的实现,但删除它的可笑边缘。这方面的一个例子可以在这里找到在蟒蛇,在原有基础上C++版本:

https://github.com/nevion/pyqimageview/blob/master/qimageview/widget.py#L276