나는 간단한 QGraphicsWidget, MyGraphicsWidget을 가지고있다. 여기에 잘 작동하는 것 같다 내 mouseMoveEvent()이다 : 그래서, 장면의 dropEvent()가 바로 새 위치로이 위젯을 이동하고, 나는 장면 자체에 대한 기자/move 이벤트가없는 내 QGraphicsWidget이 QDrag 후에는 안되는 이벤트를 수신하는 이유는 무엇입니까?
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);
}
그 (것)들은 위젯에 정확하게 전달되어야합니다.
그러나 드래그가 완료되면 다음 마우스를이 위젯에 놓습니다. 따라서 다른 위젯을 클릭하고 드래그하려고하면 커서가이 위젯에 있지 않다는 사실에도 불구하고 우연히 드래그하여 멈추게됩니다. 나는 event-> pos()와 event-> scenePos()를 출력했고 커서는 그것이 보이는 곳 (위젯에 전혀 없다)으로보고했다. 클릭하고 끌기 전에 한 번 클릭하면 모든 것이 정상적으로 작동합니다. mouseReleaseEvent() 또는 내 mouseMoveEvent() 내에서 구현해야 할 무언가가 있습니까?
감사합니다.
'drag-> exec()'가 아니어야합니까? 문서에서'QDrag :: start()'메서드를 볼 수 없습니다. – cmannett85
버전 차이가있을 수 있습니다. 우리는 완전히 최신이 아닙니다. – Brianide
API가 크게 변경된 경우 귀하의 질문에 어떤 버전이 포함되어 있는지 설명해야합니다. – cmannett85