我正在 QGraphicsView 中构建节点图,目前正在实现平移。我使用以下问题“如何在 QGraphicsView 中平移图像”开始,但平移受到滚动条范围的限制。
我也尝试了 translate 方法,但它给出了相同的结果。视图仅限于某个矩形。
我想无限制地平移,图形可以变得非常大,并且能够在场景的不同区域工作(这里一个图形,那里另一个图形等)很有用。
我正在 QGraphicsView 中构建节点图,目前正在实现平移。我使用以下问题“如何在 QGraphicsView 中平移图像”开始,但平移受到滚动条范围的限制。
我也尝试了 translate 方法,但它给出了相同的结果。视图仅限于某个矩形。
我想无限制地平移,图形可以变得非常大,并且能够在场景的不同区域工作(这里一个图形,那里另一个图形等)很有用。
如果您观看此视频,在 3 分钟标记处您将看到平移屏幕的演示。这里的应用程序是我开发的一个,虽然它没有显示,但在平移时,棋盘的空间似乎是无限的。
我为此做的是创建一个 32000 x 32000 的 QGraphicsScene,并使用位于 QGraphicsScene 中心的视图启动应用程序。测试团队花了很长时间试图平移到图形场景的边缘,但每个人在到达之前都放弃了——也许场景本来可以更小!
滚动条策略设置为关闭,并通过其 translate 函数移动 QGraphicsView 来完成转换,传递在 mouseMoveEvent 中应用的触摸或鼠标移动的增量。
通过这种方式,您不必担心超出滚动条范围,并且创建一个非常大的 QGraphicsScene 也没有问题,因为它只是一个坐标空间。
我遇到了同样的问题。但是,我认为将场景设置为大场景并离开它不是最好的选择。我开发了一种动态改变场景大小的方法,让你可以自由移动。您可以在这个其他堆栈溢出答案中找到它。
你想绘制图表。试试这个 Qt 库 - QCustomPlot,它将为您节省数小时的辛勤工作。