2016-07-15 115 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