繁体   English   中英

点击QGraphicsView Qt的活动

[英]Click event for QGraphicsView Qt

我在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的左上角而不是整个小部件的左上角。 有没有人知道如何使这项工作,我从我的代码中想到这是它正在做的事情,但事实证明这不是这样,iv现在看了一会儿,但我现在什么都没有

任何帮助将非常感谢谢谢。

重新实现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的父级。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM