我有一个简单的QGraphicsWidget,MyGraphicsWidget。这是我的mouseMoveEvent(),似乎工作正常:
void MyGraphicsWidget::mouseMoveEvent (QGraphicsSceneMouseEvent *event)
{
QPointF p = event->scenePos() - m_StartPos;
if(p.manhattanLength() < 20)
return;
//omitted drawing a rounded rect on the drag
QDrag *drag = new QDrag(event->widget());
drag->start(Qt::MoveAction);
}
场景的dropEvent()只是将这个小部件移动到新的位置,我没有场景本身的按下/移动事件,所以那些应该正确传递给内部的小部件。
然而,一旦拖动完成,下一次鼠标按下将在此小部件上。因此,如果我尝试单击并拖动另一个小部件,我会在事故中拖动这个小部件,尽管我的光标不在此小部件上。我打印出了event-&gt; pos()和event-&gt; scenePos(),并且都报告了光标在它看来的位置(根本不在小部件上)。如果我在尝试单击并拖动之前单击一次,则一切正常。我需要在mouseReleaseEvent()或mouseMoveEvent()中实现一些东西吗?
感谢。
答案 0 :(得分:0)
现在正在运作。我很确定这是问题所在: MyGraphicsWidget有另一个自定义GraphicsWidget坐在它上面,在它的mousePressEvent中,我调用了QGraphicsWidget :: mousePressEvent(event);在活动开始时。事件的其余部分从未被触发,这一切都搞砸了。我把那条线移到方法的末尾,现在一切似乎都没问题。