Qt 如何在QGraphicsview中平移超出滚动条范围?

Qt 如何在QGraphicsview中平移超出滚动条范围?,qt,pyside,qgraphicsview,Qt,Pyside,Qgraphicsview,我正在QGraphicsView中构建节点图,目前正在实现平移。 我使用了下面的问题“”开始,但平移受到滚动条范围的限制 我也尝试了翻译方法,但它给出了相同的结果。视图仅限于某个矩形 我想不受限制地平移,图形可以变得相当大,并且能够在场景的不同区域中工作非常有用(这里有一个图形,那里有另一个图形,等等)。您想要绘制图形。试用此Qt库,它将为您节省数小时的辛苦工作。如果您查看一下,在3分钟标记处,您将看到演示在屏幕上平移。这里的应用程序是我开发的,虽然它没有显示出来,但当平移时,董事会的不动产似乎

我正在QGraphicsView中构建节点图,目前正在实现平移。 我使用了下面的问题“”开始,但平移受到滚动条范围的限制

我也尝试了翻译方法,但它给出了相同的结果。视图仅限于某个矩形


我想不受限制地平移,图形可以变得相当大,并且能够在场景的不同区域中工作非常有用(这里有一个图形,那里有另一个图形,等等)。

您想要绘制图形。试用此Qt库,它将为您节省数小时的辛苦工作。

如果您查看一下,在3分钟标记处,您将看到演示在屏幕上平移。这里的应用程序是我开发的,虽然它没有显示出来,但当平移时,董事会的不动产似乎是无限的

我所做的是创建一个32000x32000的QGraphicscene,并以QGraphicscene中心的视图启动应用程序。测试团队花了很长时间试图平移到图形场景的边缘,但每个人在到达边缘之前都放弃了——也许场景可以更小

滚动条策略设置为off,通过其translate功能移动QGraphicsView,传递mouseMoveEvent中应用的触摸或鼠标移动的增量,即可完成转换


这样做,您就不必担心超出滚动条范围,创建一个非常大的QGraphicscene也没有问题,因为它只是一个坐标空间。

我遇到了同样的问题。然而,我不认为把场景设置成一个大场景,然后离开它是最好的选择。我开发了一种动态方式来改变场景大小,让你可以自由移动。您可以在另一个堆栈溢出中找到它。

QGraphicsView可用于可视化整个场景,或仅部分场景。默认情况下,第一次显示视图时会自动检测可视化区域(通过调用QGraphicscene::itemsBoundingRect())。要自己设置可视化区域矩形,可以调用setscen直立()。这将适当调整滚动条的范围。请注意,尽管场景支持几乎无限的大小,但滚动条的范围永远不会超过整数(INT_MIN,INT_MAX)的范围。
@titoti感谢您的代码提示和鼓励。但是,需要明确的是,除了为场景设置一个巨大的矩形外,没有明显的方法将视图集中在图形的任何节点上?例如,一个大图的第一个节点可能靠近场景矩形边界,因此我需要设置一个矩形,它是图边界框的三倍,以便能够在任何节点上居中。没有比这更简单的方法了?@LionelBarret:想想看:滚动条需要有一个有限的范围。这个范围必须来自某个地方。您不需要设置“大”矩形。只需设置一个矩形,该矩形将所有映射到场景矩形的视口限定在每个节点的中心。然后它会足够大,可以让你把任何节点放在中心,而不是更大。通常在基于单元格的电子表格中实现的替代解决方案是,当您滚动到当前“场景”的末尾时,扩展“场景”(电子表格)的范围。您需要为此定制QSceneView。谢谢。我理解滚动条的限制,我更想知道是否有可能在没有滚动条的情况下拥有一个2d空间(视觉上和功能上)。空间分割和其他的工作原理是一样的。这与所问的问题无关。图表和图表是两种不同的东西。谢谢,这就是我一直在寻找的答案。