2 つの 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 を呼び出すと、他の場所ではなく、すべて正常に動作します。ただし、dragdrop-action が処理中でない場合、すべての dragdropframe はグループボックスを親として持つ必要があります。誰かが私が間違っていることを知っていますか? 何度も勉強しましたが、その論理は正しいと思います...
実際、私が知っている完全なドラッグ アンド ドロップ機能はありません。まず、動きが正常に機能するという問題を修正したいと思います。