2013-10-28 168 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