【问题标题】:Drag and drop on a QGraphicScene - mouse cursor in center of widget拖放到 QGraphicSscene - 小部件中心的鼠标光标
【发布时间】:2016-07-15 13:49:05
【问题描述】:

我希望鼠标光标位于小部件上单击鼠标的位置或小部件的中心。

例如,如果小部件是一个矩形并且它处于拖动事件中,它会如下图所示,即我在中心单击并开始拖动的事件:

红圈在哪里是鼠标光标每次,无论我在哪里“拾取”小部件。

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

我可以将光标设置在中心吗,例如,如果小部件是从中心设置的?

【问题讨论】:

    标签: c++ qt drag-and-drop qwidget qgraphicsscene


    【解决方案1】:

    QDrag::setHotSpot 是你的朋友。

    更新:

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

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

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

    【讨论】:

    • setHotspot 是正确的函数,但它需要 QPoint 作为参数而不是 QSize。所以好的解决方案是:drag->setHotSpot( QPoint( this->width() / 2, this->height() / 2 ) ); 谢谢。我会更新您的答案并接受它作为解决方案。
    猜你喜欢
    • 2012-01-17
    • 1970-01-01
    • 1970-01-01
    • 2018-12-01
    • 2011-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多