如何显示QGraphicsScene?

0 投票
2 回答
2856 浏览
提问于 2025-04-15 20:38

我有以下代码,但我不太确定怎么把QGraphicsScene加到我的布局里……

class MainForm(QDialog):
    def __init__(self, parent=None):
        super(MainForm, self).__init__(parent)
        self.scene = QGraphicsScene(self)
        self.scene.setSceneRect(0, 0, 500, 500)
        self.view = QGraphicsView()
        self.view.setRenderHint(QPainter.Antialiasing)
        self.view.setScene(self.scene)
        self.view.setFocusPolicy(Qt.NoFocus)
        zoomSlider = QSlider(Qt.Horizontal)
        zoomSlider.setRange(5, 200)
        zoomSlider.setValue(100)
        self.pauseButton = QPushButton("Pause")
        quitButton = QPushButton("Quit")

        layout = QVBoxLayout()
        layout.addWidget(zoomSlider)

        self.setLayout(layout)
        self.startTimer(10)

我该怎么让我的QGraphicsScene运行起来?我刚接触Qt。难道我真的需要把QGraphicsScene加到布局里吗?

2 个回答

0

你已经添加了一个场景到视图中,这样就可以了。但你还需要把这个视图加到你的主窗口(MainForm)和布局(Layout)里。视图是一种可以在你的应用程序中显示的小部件,而场景则不是小部件,不能直接加到布局里,它只是视图的一个组成部分。此外,你可能还需要在场景中添加一些图形元素(比如矩形、图片),然后看看它们是怎么工作的。

2

你需要做一些类似这样的事情:

...
layout = QVBoxLayout()
layout.addWidget(zoomSlider)
layout.addWidget(view)
self.setLayout(layout)
...

撰写回答