我正在为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”吗?