Qt 为什么QGraphicsView mapFromScene根据何时调用view.show()返回差异点?

Qt 为什么QGraphicsView mapFromScene根据何时调用view.show()返回差异点?,qt,viewport,qgraphicsview,Qt,Viewport,Qgraphicsview,我想获得场景原点(0,0)的视图坐标。但我无法找到QGraphicsView::mapFromScene()奇怪返回的原因。取决于何时调用QGraphicView::show()(1.在将场景添加到视图之前;2.在将场景添加到视图之后但在将项目添加到场景之前;3.在添加场景和项目之后),结果不同 QGraphicsView view; QGraphicsScene scene; // 1. view.show(); ---> view.mapToScene(QPoint(0,0))

我想获得场景原点(0,0)的视图坐标。但我无法找到QGraphicsView::mapFromScene()奇怪返回的原因。取决于何时调用QGraphicView::show()(1.在将场景添加到视图之前;2.在将场景添加到视图之后但在将项目添加到场景之前;3.在添加场景和项目之后),结果不同

QGraphicsView view;
QGraphicsScene scene;

//    1. view.show(); ---> view.mapToScene(QPoint(0,0)) return (127,95)

view.setScene(&scene);

//    2. view.show(); ---> view.mapFromScene(QPoint(0,0)) return (99,49)

scene.addRect(0,0,300,300, QPen(QColor(Qt::red)));
view.update();

//    3. view.show(); ---> view.mapToScene(QPoint(0,0)) return (0,0) which seem 
      to be the only correct one.

qDebug() << view.mapToScene(QPoint(0,0));
QGraphicsView视图;
QsCENE场景;
//    1. view.show();-->视图.mapToScene(QPoint(0,0))返回(127,95)
视图。设置场景(和场景);
//    2. view.show();-->view.mapFromScene(QPoint(0,0))返回(99,49)
scene.addRect(0,0300300,QPen(QColor(Qt::red));
view.update();
//    3. view.show();-->view.maptosene(QPoint(0,0))返回(0,0),看起来
是唯一正确的。
qDebug()这是意料之中的。在#1,没有场景,因此任何映射概念都是无效的。你可以得到任何和所有的结果。在#2处,场景没有边界矩形,因此可能以1:1为中心进行贴图-贴图在这一点上没有任何用处,因为没有任何可从中进行贴图(空场景!)。在#3处,场景中终于出现了一些东西,贴图具有预期值