2016-07-15 5 views
1

위젯 또는 위젯의 가운데에서 마우스를 클릭 한 위치에 마우스 커서를 놓고 싶습니다.QGraphicScene의 드래그 앤 드롭 - 위젯 중앙의 마우스 커서

enter image description here

어디 : 예를 들어

위젯이 사각형 인 경우는 드래그 이벤트는 아래 이미지처럼 표시에, 이벤트 나 중앙에 클릭하고 한 드래그하기 시작 빨간 원은 매번 마우스 커서입니다. 위젯을 "가져 오는"곳이면 어디든됩니다.

void              
myQFrame::mousePressEvent(QMouseEvent* event) 
{ 
    if(event->button() == Qt::LeftButton) 
    { 
     QDrag* drag = new QDrag(this); 
     QMimeData* mimeData = new QMimeData; 

     //....other stuff 
     drag->setMimeData(mimeData); 

     QPixmap widgetPixmap(this->size()); 
     this->render(&widgetPixmap, QPoint(), QRegion(this->rect())); 
    } 
} 

산사 나무의 열매는 내가 위젯이 중심에서 말뚝 인 경우, 예를 들어 중앙에 커서를 설정할 수 있습니다 다음 mousePressEvent에서

, 뭔가 좋아합니까?

답변

1

QDrag::setHotSpot은 (는) 친구입니다.

는 UPDATE :

핫스팟에 의해 지정된 점에 사용 픽스맵의 왼쪽 상단 모서리에 핫 스폿의 위치를 ​​설정합니다.

참고 : 핫 스폿으로 인해 픽스맵이 커서 아래에 직접 표시되는 경우 X11에서 pixmap이 마우스 움직임을 따라 잡을 수 없습니다.

drag->setHotSpot(QPoint(this->width()/2, this->height()/2)); 
+0

은'setHotspot' 오른쪽 함수이지만 매개하지 않는''QSize' 같은 QPoint' 걸린다. 그래서 좋은 해결책은'drag-> setHotSpot (QPoint (this-> width()/2, this-> height()/2)); '고맙습니다. 귀하의 답변을 업데이트하고 해결책으로 수락하겠습니다. – mtb