QGraphicsScene显示一个按钮
时间: 2024-03-01 07:52:57 浏览: 81
QGraphicsScene 本身不支持显示按钮,但是可以通过自定义 QGraphicsItem 实现一个按钮,并将其添加到 QGraphicsScene 中显示。
以下是一个简单的示例代码,用于创建一个 QGraphicsItem 按钮,并将其添加到 QGraphicsScene 中显示:
```python
from PyQt5.QtWidgets import QGraphicsItem, QGraphicsScene, QGraphicsTextItem, QGraphicsRectItem, QApplication, QGraphicsView, QGraphicsProxyWidget, QPushButton, QWidget
from PyQt5.QtCore import QRectF
from PyQt5.QtGui import QColor
class Button(QGraphicsItem):
def __init__(self, text, parent=None):
super(Button, self).__init__(parent)
self.text = QGraphicsTextItem(text, self)
self.text.setDefaultTextColor(QColor(255, 255, 255))
rect = self.text.boundingRect()
self.rect = QGraphicsRectItem(rect, self)
self.rect.setBrush(QColor(0, 0, 255))
def boundingRect(self):
return QRectF(self.rect.rect())
def paint(self, painter, option, widget=None):
pass
app = QApplication([])
scene = QGraphicsScene()
button = QPushButton('Button')
widget = QWidget()
layout = QVBoxLayout()
layout.addWidget(button)
widget.setLayout(layout)
proxy = QGraphicsProxyWidget()
proxy.setWidget(widget)
scene.addItem(proxy)
buttonItem = Button('Button Item')
buttonItem.setPos(100, 100)
scene.addItem(buttonItem)
view = QGraphicsView(scene)
view.show()
app.exec_()
```
这个示例代码中,我们创建了一个名为 Button 的自定义 QGraphicsItem 类,它包含一个 QGraphicsTextItem 和一个 QGraphicsRectItem,用于显示按钮的文本和背景色。然后,我们将一个 QPushButton 添加到一个 QWidget 中,并将 QWidget 包装成 QGraphicsProxyWidget,然后将 QGraphicsProxyWidget 添加到 QGraphicsScene 中,实现了一个按钮的显示。最后,我们创建了一个 ButtonItem 实例,并将其添加到 QGraphicsScene 中,以显示自定义按钮。
阅读全文