即使在物品离开后,我的小部件仍保留QDrag的所有权

时间:2019-03-16 00:48:06

标签: c++ qt

我正在为Appleseed Studio项目在场景中实现拖放材质。

当拖动的项目离开场景(RenderWidget)时,仍会像在场景内部一样调用dragMoveEvent。根据我的测试,看来这是由于MainWindow enable drop造成的。

现在我使用此解决方案:

void RenderWidget::dragMoveEvent(QDragMoveEvent* event)
{
    if (pos().x() <= event->pos().x() && pos().y() <= event->pos().y()
        && event->pos().x() < pos().x() + width() && event->pos().y() < pos().y() + height())
    {
        event->accept();
    }
    else
        event->ignore();
}

但是由于“ event-> pos()”仅是所拖动项目的相对位置,因此请注意100%可靠。

有人知道当被拖动的项目实际离开小部件时,如何强制Qt调用“ RenderWidget”的“ dragLeaveEvent”吗?

叉子:https://github.com/Uedaki/appleseed

0 个答案:

没有答案