我希望鼠标光标位于窗口小部件上或窗口小部件中心单击鼠标的位置。
例如,如果小部件是一个矩形并且处于拖动事件中,它就像在下面的图像中一样,事件I已经在中心点击并开始拖动:
每次在哪里,红色圆圈都是鼠标光标,无论我在哪里拾取"小部件。
在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() ) );
}
}
Haw我可以将光标设置在中心,例如,如果小部件是来自中心的纠察队列吗?
答案 0 :(得分:1)
QDrag::setHotSpot
是你的朋友。
更新:
设置热点相对于左上角的位置 用于热点指定点的像素图。
注意:在X11上,像素图可能无法跟上鼠标的步伐 如果热点导致像素图直接显示,则移动 在光标下。
drag->setHotSpot( QPoint( this->width() / 2, this->height() / 2 ) );