缩放后更改鼠标位置的问题

时间:2019-07-11 09:21:12

标签: qt qgraphicsview mouse-cursor

我正在为我的应用程序实现快照功能。

我有一个QGraphicItem(ToSnap),当我在QGraphicView上移动它时,它跟随我的鼠标光标。

当我足够靠近视图中的另一个元素(靠近非常重要的点)时,移动鼠标光标,我想同时更改项目的位置(ToSnap)和鼠标光标在VIP。

简而言之,我能够重新实现场景的鼠标移动事件,向视图发出信号:

void SpecialGraphicScene::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
    QGraphicsScene::mouseMoveEvent(event);
    //VIPs is the list of all the VeryImportantPoints 
    for (int kk = 0; kk < VIPs.size(); ++kk)
    {
       if (ToSnap->collidesWithItem(VIPs.at(kk)))
           {
               ActualVIP=VIPs.at(kk);
               ToSnap->setPos( ActualVIP->pos());
               QPoint point; 
               point.setX(ToSnap->pos().x()); 
               point.setY(ToSnap->pos().y());
               emit MousetoMove(point);
            }
      }
  }

在我重新实现QGraphicView时,以下插槽捕获了MousetoMove信号

void SpecialGraphicsView::MouseUpdate(QPoint myscenepoint)
{
    QPoint myglob=this->mapFromScene(myscenepoint);
    myglob=QWidget::mapToGlobal(myglob);
    QCursor::setPos(myglob);
}

我现在正在用wheelEvent实现缩放。

当我没有放大视图时,效果很好。

缩放后,ToSnap项的位置位于VIP上,而不是将鼠标光标的位置相对于ToSnap和VIP进行移动。 您知道如何解决此问题吗?我是否使用了不正确的mapFromScene或mapToGlobal?

0 个答案:

没有答案