0

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 はグループボックスを親として持つ必要があります。誰かが私が間違っていることを知っていますか? 何度も勉強しましたが、その論理は正しいと思います...

実際、私が知っている完全なドラッグ アンド ドロップ機能はありません。まず、動きが正常に機能するという問題を修正したいと思います。

4

0 に答える 0