使用环境:
PySide2 + QT5.12.8 + Python3.7 + Windows10
QT或者PyQt解决思路类似。
问题描述:
由于项目需要,场景需要较大的区域,因此初始化时,场景的面积大于视图窗口的面积,这种情况下,会出现滚动条,且软件会默认将视图聚焦与场景中间,而不是左上角,不符合通常的软件操作习惯,因此需要设置将视图窗口聚焦于场景左上角。
解决方案:
下述代码仅作参考,关键代码为self.graphView.centerOn(0, 0)
,通过这句代码将视图中心设置为左上角。
from PySide2.QtWidgets import QApplication, QMainWindow, QGraphicsScene, QGraphicsView
class UIMainWindow(QMainWindow):
def __init__(self, *args, **kwargs):
super(UIMainWindow, self).__init__(*args, **kwargs)
self.showMaximized() # 最大化窗口
self.graphView = QGraphicsView(self) # 视图窗口大小小于窗口大小
self.graphScene = QGraphicsScene()
self.desktop = QtWidgets.QApplication.desktop()
self.setSceneRect(0, 0, self.desktop.width() * 1.2, self.desktop.height() * 1.2) # 设置场景范围,令其大于窗口大小
self.graphView.setScene(self.graphScene)
# 下面这句代码必须在上行代码之后,否则无效
self.graphView.centerOn(0, 0) # 在设置好场景后,将view视图中心设置为左上角
self.setCentralWidget(self.graphView)
……
参考文献
[1] QGraphicsView大于QGraphicsScene时出现滚动条时,改变scene的显示位置
以上,欢迎交流。