使用環境:
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的顯示位置
以上,歡迎交流。