我在Qt方面不是完全的新手,但有一些事情我不知道...
我用Python编程,但你可以使用任何语言回答。
我有几个QGraphicsItem(s),位于一个QGraphicsScene中,该场景通过普通的QGraphicsView查看。一切正常。
我的场景非常大,有10,000 x 10,000像素,所有图形项都散布在周围。
例如:
# 创建场景对象。 scene = QtGui.QGraphicsScene() scene.setSceneRect(0, 0, 10000, 10000) # 创建视图对象。 view = QtGui.QGraphicsView() view.setScene(scene)
# 向场景添加一些对象。 # scene.addItem(...) # ...
# 项列表。 items = scene.items()
# 这就是我如何居中显示项的方式。 view.centerOn(some_item) view.fitInView(some_item, Qt.KeepAspectRatio)
我的问题是,如何使用类似于centerOn的东西将视图居中于每个项上,但平滑移动?
目前,centerOn在下一个项上快速移动,我想要缓慢移动它,也许使用缓动曲线的QPropertyAnimation?
我尝试使用大循环中的view.translate(1,1)将视图移动到下一个项,但移动太快了,就像centerOn一样。
我尝试在翻译之间使用time.sleep(0.01)等待一段时间,但窗口会阻塞直到循环结束...所以这很糟糕。
非常感谢!
我有几个QGraphicsItem(s),位于一个QGraphicsScene中,该场景通过普通的QGraphicsView查看。一切正常。
我的场景非常大,有10,000 x 10,000像素,所有图形项都散布在周围。
例如:
# 创建场景对象。 scene = QtGui.QGraphicsScene() scene.setSceneRect(0, 0, 10000, 10000) # 创建视图对象。 view = QtGui.QGraphicsView() view.setScene(scene)
# 向场景添加一些对象。 # scene.addItem(...) # ...
# 项列表。 items = scene.items()
# 这就是我如何居中显示项的方式。 view.centerOn(some_item) view.fitInView(some_item, Qt.KeepAspectRatio)
我的问题是,如何使用类似于centerOn的东西将视图居中于每个项上,但平滑移动?
目前,centerOn在下一个项上快速移动,我想要缓慢移动它,也许使用缓动曲线的QPropertyAnimation?
我尝试使用大循环中的view.translate(1,1)将视图移动到下一个项,但移动太快了,就像centerOn一样。
我尝试在翻译之间使用time.sleep(0.01)等待一段时间,但窗口会阻塞直到循环结束...所以这很糟糕。
非常感谢!