2016-07-15 10 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では、ピクスマップがマウス の動きに追いつくことができない場合があります。

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

'setHotspot'は右の関数であるが、それはパラメータではない' QSize'として 'QPoint'をとります。だから、良い解決策は 'drag-> setHotSpot(QPoint(this-> width()/ 2、this-> height()/ 2));'ありがとう。私はあなたの答えを更新し、それを解決策として受け入れます。 – mtb

関連する問題