2010-08-18 136 views
5

我想在它的全景使用QGraphicsScene显示图片。但是当我把QgraphicsScene放在QGraphicsView中时,我得到一个滚动条。我尝试了很多方法,但都是去静脉。那么有人可以告诉我如何在没有滚动条的情况下获得完整的视图。Qt - QGraphicsView无滚动条

回答

5
QGraphicsView v; 
v.setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); 
v.setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); 

要以编程方式调整滚动,一旦隐藏这些滚动,请使用v.ensureVisible()的重载之一。

8

您可能会看到滚动条,因为场景大于图形视图中的可用区域。默认情况下,QGraphicsView带有1像素的边距。为了解决这个问题,你可以尝试:

QRect rcontent = graphicsView.contentsRect(); 
graphicsView.setSceneRect(0, 0, rcontent.width(), rcontent.height()); 

我已经得到滚动条,因为我是手动设置现场RECT到图形项目我添加的大小 - 这是作为的QGraphicsView小部件一样大。我没有考虑到保证金。

+0

有没有办法只禁用1像素的边距?你的代码为我解决了这个问题,但它仍然看起来像是一个明显的错误修正。 – Trilarion 2014-04-04 10:47:33

+1

不是;该边界在'fitInView'中被硬编码(见QTBUG-11945)。摆脱它的唯一方法是编写自己的'fitInView'。已经有一些讨论通过API公开了这个保证金,但是还没有将它变成任何Qt版本。 – AndrewS 2014-04-04 15:25:39