如果上述方法没有解决问题,你可以尝试以下步骤来确保图形可以按指定坐标显示:
1. **禁用视图的自动调整功能**:
在`GraphicsView`初始化时,禁用缩放和调整功能:
self.setTransformationAnchor(QGraphicsView.NoAnchor)
self.setResizeAnchor(QGraphicsView.NoAnchor)
2. **设置场景矩形**:
直接在初始化时指定场景的矩形大小,以明确场景的可视区域:
self.scene.setSceneRect(0, 0, 400, 300)
3. **关闭反锯齿(可选项但建议尝试)**:
有时反锯齿可能会影响显示效果,尝试关闭它:
# self.setRenderHints(QPainter.Antialiasing)
这是更新后的代码示例:
class GraphicsView(QGraphicsView):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.setTransformationAnchor(QGraphicsView.NoAnchor)
self.setResizeAnchor(QGraphicsView.NoAnchor)
self.setRenderHints(QPainter.Antialiasing) # 尝试保持抗锯齿,但可以注释掉
# self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
# self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
class MyWidget(QWidget):
def init_ui(self):
# ...
self.scene.setSceneRect(0, 0, 400, 300) # 设置场景矩形
# ...
def add_circle(self):
rect = QRectF(100, 40, 10, 10)
self.circle = self.scene.addEllipse(rect, QPen(Qt.black))
请确保在设置`sceneRect`之后再添加图形。通过以上调整,应该可以控制图形按指定坐标显示。如果问题仍然存在,请给我更多细节,我会进一步协助你。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |