gpt4 book ai didi

python - MainWindow 中的多个 QGraphicsViews 和 QGraphicsScenes

转载 作者:太空宇宙 更新时间:2023-11-04 02:04:39 24 4
gpt4 key购买 nike

我希望开发一个 Qt 应用程序,其主/父小部件能够“容纳”一个或多个“特殊”小部件。每个特殊的小部件显示一个单独的 QGraphicsView 和 QGraphicsScene。

据我所知,只有一个中央小部件可以设置图形 View ,即 QMainWindow::setCentralWidget( QGraphicsView ),而我希望有多个图形 View 。

这是我失败的快速而肮脏的尝试(在 PySide 中)

#!/usr/bin/python

from PySide import QtGui
import sys

class MyApp(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
layout = QtGui.QHBoxLayout()

self.scene1 = QtGui.QGraphicsScene(self)
self.scene1.addRect(5,5,200,200)
self.view1 = QtGui.QGraphicsView(self.scene1, self)

self.scene2 = QtGui.QGraphicsScene(self)
self.scene2.addLine(500,500,300,300)
self.view2 = QtGui.QGraphicsView(self.scene1, self)

layout.addWidget(self.view1)
layout.addWidget(self.view2)

self.setLayout(layout)
self.show()

if __name__=="__main__":
app=QtGui.QApplication(sys.argv)
myapp = MyApp()
sys.exit(app.exec_())

最佳答案

QMainWindow 有一个默认布局,您不必设置它。在 Qt 中,QWidget 可以用作容器,因此我们创建一个小部件,它将作为 QGraphicsViews 的容器,同时也是 centralwidget:

class MyApp(QtGui.QMainWindow):
def __init__(self, parent=None):
super(MyApp, self).__init__(parent)

self.scene1 = QtGui.QGraphicsScene(self)
self.scene1.addRect(5,5,200,200)
self.view1 = QtGui.QGraphicsView(self.scene1)

self.scene2 = QtGui.QGraphicsScene(self)
self.scene2.addLine(500,500,300,300)
self.view2 = QtGui.QGraphicsView(self.scene2)

central_widget = QtGui.QWidget()
layout = QtGui.QHBoxLayout(central_widget)
layout.addWidget(self.view1)
layout.addWidget(self.view2)
self.setCentralWidget(central_widget)
self.show()

enter image description here

关于python - MainWindow 中的多个 QGraphicsViews 和 QGraphicsScenes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54990868/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com