C++ 为什么第一个添加的项目总是出现在Qt中图形场景/视图的中心?
我有一个图形场景和视图,然后我添加一个元素。但无论我给出什么x/y坐标,它总是出现在图形视图的中心 为什么会发生这种情况,我如何使它出现在,比如说,左上角 这是我的代码:C++ 为什么第一个添加的项目总是出现在Qt中图形场景/视图的中心?,c++,qt,qgraphicsview,qgraphicsscene,C++,Qt,Qgraphicsview,Qgraphicsscene,我有一个图形场景和视图,然后我添加一个元素。但无论我给出什么x/y坐标,它总是出现在图形视图的中心 为什么会发生这种情况,我如何使它出现在,比如说,左上角 这是我的代码: scene = new QGraphicsScene(this); ui->graphicsView->setScene(scene); QGraphicsEllipseItem *ellipseItem = scene->addEllipse(150, 150, 10, 10); 您可能需要定义QGrap
scene = new QGraphicsScene(this);
ui->graphicsView->setScene(scene);
QGraphicsEllipseItem *ellipseItem = scene->addEllipse(150, 150, 10, 10);
您可能需要定义QGraphicsView显示的场景矩形。我认为默认视图只显示当前场景的中心边界矩形,它就是椭圆。您可以使用QGraphicsView::fitInView来定义要显式显示的区域。原因是默认情况下,
QGraphicscene
通过将所有项目矩形相加来计算its。添加第一个项目时,它会自动将其用作场景矩形。默认情况下,QGraphicsView
在场景矩形上缩放并居中
如果知道最终或所需的场景矩形,请在添加任何项目之前进行设置:
scene->setSceneRect(0, 0, 800, 600);
scene->addEllipse(150, 150, 10, 10);
谢谢,我试过了,但是fitInView似乎也可以缩放场景,我可以避免缩放吗?在设置view rect时使用小部件的宽度和高度。此外,应该有一个受保护的“调整大小”方法,您可以覆盖该方法,以便在小部件的布局发生变化时维护视图。