圆形 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_())
我正在 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_())