我正在使用QGraphicsView和QGraphicsScene(Qt4.8,PyQt)的可视化SW。我需要根据缩放级别处理LOD(详细程度)。为此,我创建了更多QGraphicsScenes,并将整个场景呈现给每个具有不同LOD级别的场景。 (每个LOD级别都有一个QGraphicsScene)。 根据缩放级别,我在这些QGraphicsScenes之间切换。 (QGraphicsView.setScene())。 最大的问题是当调用setScene()时,QGraphicsView的ScrollBars重置它们的位置。QGraphicsView详细处理级别
下面的代码片段它试图恢复滚动条的值,但它不工作:
hsb = self.horizontalScrollBar()
vsb = self.verticalScrollBar()
hv, vv = hsb.value(), vsb.value()
self.lod = i
self.setScene(self.scenes[self.lod])
hsb.setValue(hv) # this simply doesn't work !!!!
vsb.setValue(vv)
任何想法,以保持滚动条的位置?或者有效的检测点处理的想法? 我可以尝试将ScrollBar的值更改信号连接到一些自定义插槽,这些自定义插槽将从自己的信号断开连接,而不是从保存的ScrollBar的值中重新设置值。这将是一个非常蹩脚和丑陋的解决方案。
您好!我还读到了这种解决方案。但是,如果您有大约100100个图形项目,并且您只想显示100个图形,那么对每100000个图形项目进行决策并不会显示效率很低。没有更好的解决方案吗? – Endre
也许你可以将项目分组?或者创建一种层次结构?您可以在datail更改级别时显示/隐藏一组项目(您可以在场景(或视图)转换更改时检查datail的级别)。 – Fabio
分组似乎是个好主意。我会寻找的。谢谢! – Endre