|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
我在一个QWidget中设置了QVBoxLayout,然后放入QGraphicsView和QGraphicsScene,之后,在Scene中画图的时候,无论坐标如何设置,layout都将图形自动居中摆放,这是啥问题?这种情况下,如何才能在指定的坐标处自由摆放自己创建的图形?我的代码如下:
from PySide6.QtWidgets import QWidget, QPushButton, QGraphicsView, QGraphicsScene, QGraphicsEllipseItem,QVBoxLayout
from PySide6.QtGui import QPen, QBrush, QColor,QPainter
from PySide6.QtCore import Qt, QRectF, QPointF
class GraphicsView(QGraphicsView):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.setRenderHints(QPainter.Antialiasing) # 开启抗锯齿
# self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
#self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
class MyWidget(QWidget):
def __init__(self):
super().__init__()
self.init_ui()
def init_ui(self):
# 设置主窗口的大小
self.resize(420, 370)
self.layout = QVBoxLayout()
# 创建 QGraphicsView 和 QGraphicsScene
self.scene = QGraphicsScene()
self.view = GraphicsView(self.scene, self)
self.view.setGeometry(10, 10, 400, 300) # 设置视图的位置和大小
# 将 QGraphicsView 添加到布局中
self.layout.addWidget(self.view)
# 创建按钮
self.add_button = QPushButton("Add Circle", self)
self.add_button.setGeometry(10, 320, 100, 30) # 设置按钮的位置和大小
self.remove_button = QPushButton("Remove Circle", self)
self.remove_button.setGeometry(120, 320, 120, 30) # 设置按钮的位置和大小
# 连接按钮点击事件
self.add_button.clicked.connect(self.add_circle)
self.remove_button.clicked.connect(self.remove_circle)
# 初始化圆圈变量
self.circle = None
def add_circle(self):
rect = QRectF(100, 40, 10, 10)
self.circle = self.scene.addEllipse(rect, QPen(Qt.black))
def remove_circle(self):
# 删除圆圈
if self.circle is not None:
self.scene.removeItem(self.circle)
self.circle = None
if __name__ == "__main__":
from PySide6.QtWidgets import QApplication
app = QApplication([])
main_window = MyWidget()
main_window.show()
app.exec() |
|