Qt:视图坐标和添加项目的视图坐标之间的问题

Qt : problem between View coordinates and View coordinates to add item

我在 QGraphicsScene 和 QGraphicsView 上苦苦挣扎了 2 天。

当我点击视图的左上角 (0,0) 时,鼠标点击事件得到 0,0 但是当我将项目添加到场景时,它给出了不同的坐标,我找不到为什么。 我认为问题出在 scene->addItem

这是代码:

void GraphBoard::drawState(QPoint cpoint)
{

    qDebug() << "Coordonnées QPoint dans drawState "<< cpoint;
    qDebug() << "Coordonnées QPoint dans drawState x"<< cpoint.x();
    qDebug() << "Coordonnées QPoint dans drawState y"<< cpoint.y();
    QGraphicsEllipseItem * mellipse = new QGraphicsEllipseItem(cpoint.x(),cpoint.y(),100,100);
    QPen pen;
    pen.setWidth(8);
    mellipse->setPen(pen);
    scene->addItem(mellipse);


}



void GraphBoard::mousePressEvent(QMouseEvent *event)
{
    qDebug() << "Coordonnées Mouse Press Event "<<event->pos();
    if(globalAddStateMode==true)

    {
        if (event->button() == Qt::LeftButton) {
            QPoint clickLocation=event->pos();
           drawState(clickLocation);
           globalAddStateMode=false;
        }
    }

}

qDebug()

Coordonnées Mouse Press Event QPoint(0,1)

Coordonnées QPoint dans drawState QPoint(0,1)

Coordonnées QPoint dans drawState x 0

Coordonnées QPoint dans drawState y 1

我程序的结果

我对场景所做的唯一事情是:

 scene = new QGraphicsScene();

        QPen pen;

        //axis
        pen.setStyle(Qt::DashLine);
        scene->addLine(0,-800,0,800,pen);
        scene->addLine(-800,0,800,0,pen); //horizontal line

view->setScene(scene);
    scene->setBackgroundBrush(Qt::gray);

实际上我很快就解决了我的问题:

QPointF clickLocation=mapToScene(event->pos());

偏移量为 -50、-50:

QGraphicsEllipseItem * mellipse = new QGraphicsEllipseItem(cpoint.x()-50,cpoint.y()-50,100,100);

使圆圈出现在鼠标周围