2016-07-15 61 views
1

我希望鼠标光标位于控件或控件中心点击鼠标的位置。在QGraphicScene上拖放 - 在控件中心的鼠标光标

例如,如果小部件是一个矩形,它是在它看起来像下面的图片拖动事件,事件,我点击的中心,开始拖动:

enter image description here

在哪里每当我“拾起”小部件的时候,红色圆圈就是鼠标光标。

mousePressEvent,我做这样的事情:

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())); 
    } 
} 

山楂可我设置光标是在中心,例如,如果小部件是从中心纠察?

回答

1

QDrag::setHotSpot是你的朋友。

UPDATE:

设置相对于用于由热点指定的点的 像素映像的左上角的热点的位置。

注意:在X11上,如果热点导致像素图在光标下直接显示 ,则像素图可能无法跟上鼠标移动。

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

'setHotspot'是正确的功能,但它需要一个'QPoint'作为参数不是'QSize'。所以最好的解决方案是:'drag-> setHotSpot(QPoint(this-> width()/ 2,this-> height()/ 2));'谢谢。我会更新你的答案并接受它作为解决方案。 – mtb