我有一个简单的 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->pos() 和 event->scenePos(),两者都报告说光标在它看起来的位置(根本不在小部件上)。如果我在尝试单击并拖动之前单击一次,一切正常。是否有可能我需要在 mouseReleaseEvent() 或我的 mouseMoveEvent() 中实现?
谢谢。