圆形 QGraphicsView

Circular QGraphicsView

我正在 PyQt 中构建一个带有 QGraphicsView 的 GUI,它将显示一个由相互关联的项目组成的大型网络,我希望能够叠加一个显示网络远处部分的较小门户 - 有点像 "picture in picture"之类的。这本身不是问题,因为我可以添加第二个 QGraphicsView 并将其设置为显示同一场景的不同部分。

诀窍是,我希望插图视图是圆形的。有谁知道如何通过子类化或其他技巧将 QGraphicsView 的形状更改为矩形以外的形状?非常感谢!

您必须使用 setMask 函数并传递一个 QRegion:

示例:

from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *

import sys


if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = QWidget()
    w.resize(430, 460)
    lay = QVBoxLayout(w)
    view = QGraphicsView()
    view.resize(400, 400)
    region = QRegion(view.rect(), QRegion.Ellipse)
    view.setMask(region)
    lay.addWidget(view)
    btn = QPushButton(w)
    lay.addWidget(btn)
    w.show()
    sys.exit(app.exec_())