我即将在两个 QGroubBox 之间创建拖放。每个都包含 DragDropFrames,它们是 QFrame 的子类,现在我想从 GroupBox 中释放 DragDropFrame 时遇到问题,它会立即消失
拖放帧:
void mousePressEvent(QMouseEvent *ev)
{
if (ev->button() == Qt::LeftButton)
{
offset = ev->pos();
if(!isReleaseFromParentWidget)
{
ReleaseFromParent(ev->pos());
}
isMouseDown = true;
}
};
void mouseReleaseEvent(QMouseEvent *ev)
{
if (ev->button() == Qt::LeftButton)
{
isMouseDown = false;
}
}
void mouseMoveEvent(QMouseEvent *ev)
{
if (isMouseDown)
{
this->move(mapToParent(ev->pos() - offset));
}
}
void ReleaseFromParent(QPoint point)
{
oldParentWidget = parentWidget();
setParent(parentWidget()->parentWidget());
isReleaseFromParentWidget = true;
this->move(mapToParent(offset));
}
当我从 DragDropFrame 而不是其他地方调用构造函数中的 ReleaseFromParent 时,一切正常。但如果拖放操作不在进程中,则每个拖放帧都应该有一个组框作为父级。有人知道我在做什么错吗?研究了很多遍,我认为逻辑是正确的......
实际上,我知道没有完整的拖放功能,首先我想解决移动工作正常的问题。