我有一个图形场景和视图,然后我添加了一个元素。但无论我给出什么 x/y 坐标,它总是出现在图形视图的中心。
为什么会发生这种情况,我怎样才能让它出现在左上角?
这是我的代码:
scene = new QGraphicsScene(this);
ui->graphicsView->setScene(scene);
QGraphicsEllipseItem *ellipseItem = scene->addEllipse(150, 150, 10, 10);
我有一个图形场景和视图,然后我添加了一个元素。但无论我给出什么 x/y 坐标,它总是出现在图形视图的中心。
为什么会发生这种情况,我怎样才能让它出现在左上角?
这是我的代码:
scene = new QGraphicsScene(this);
ui->graphicsView->setScene(scene);
QGraphicsEllipseItem *ellipseItem = scene->addEllipse(150, 150, 10, 10);
原因是默认情况下,通过将所有项目矩形相加来QGraphicsScene
计算它。sceneRect
添加第一项时,它会自动将其用作场景矩形。默认情况下QGraphicsView
,在场景矩形上缩放和中心。
如果您知道最终或所需的场景矩形,请在添加任何项目之前对其进行设置:
scene->setSceneRect(0, 0, 800, 600);
scene->addEllipse(150, 150, 10, 10);
您可能想要定义由 QGraphicsView 显示的场景矩形。我认为默认视图只显示当前场景的居中边界矩形,这只是你的椭圆。您可以使用 QGraphicsView::fitInView 来定义要显式显示的区域。