单击qgraphicsviewqt的事件

Click event for QGraphicsView Qt

本文关键字:事件 qgraphicsviewqt 单击      更新时间:2023-10-16

我在Qt中做了一个GUI,基本上是一个小部件上的QGraphicsView我有一个功能:

void GUI::mousePressEvent(QMouseEvent *event)
{
    if(event->button() == Qt::LeftButton)
    {
        QPointF mousePoint = ui->graphicsView->mapToScene(event->pos());
        qDebug() << mousePoint;
    }
}

链接到一个公共槽:

  void mousePressEvent(QMouseEvent *event);

这显示了我在控制台上的x,y坐标的地方,我点击,但目前这是在整个小部件上工作,我理想情况下希望x,y(0,0)是QGraphicsView的左上角,而不是整个小部件的左上角。有没有人知道如何使这个工作,我认为从我的代码,这就是它在做什么,但事实证明这不是这样,我有一个环顾四周一段时间了,但我来了什么都没有

重新实现QGraphicsViewmousePressEvent(QMouseEvent *event)而不是您的小部件将是"正确"的方式。否则你可以用:

// Detect if the click is in the view.
QPoint remapped = ui->graphicsView->mapFromParent( event->pos() );
if ( ui->graphicsView->rect().contains( remapped ) )
{
     QPointF mousePoint = ui->graphicsView->mapToScene( remapped );
}

这里假设小部件是QGraphicsView的父部件。