Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ qt-阻力和阻力;下降:帧消失_C++_Qt_User Interface_Drag And Drop_Qt Designer - Fatal编程技术网

C++ qt-阻力和阻力;下降:帧消失

C++ qt-阻力和阻力;下降:帧消失,c++,qt,user-interface,drag-and-drop,qt-designer,C++,Qt,User Interface,Drag And Drop,Qt Designer,我将在两个QGroubBox之间创建一个拖放。每个都包含DragDropFrame,它们是QFrame的一个子类,现在我有一个问题,当我想从GroupBox中释放DragDropFrame时,它会立即消失 拖缆架: void mousePressEvent(QMouseEvent *ev) { if (ev->button() == Qt::LeftButton) { offset = ev->pos(); if(!isReleaseF

我将在两个QGroubBox之间创建一个拖放。每个都包含DragDropFrame,它们是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操作未在处理中,则每个dragdropframe都应该有一个groupbox作为父对象。有人知道我做错了什么吗?我研究了很多次,我认为逻辑是正确的


事实上,我知道没有一个完整的拖放功能,首先我想解决一个问题,那就是运动可以正常工作

您谈论的是DnD,但dragEnterEvent(QDragEnterEvent*event)、
dragMoveEvent(QDragMoveEvent*event)
dropEvent(QDropEvent*event)
QDrag
,等等在哪里。您是否遵循了Qt的DnD框架()!?事实上,我还没有开始实施,因为基本运动不起作用。首先我想解决这个问题,在遇到下一个问题之前,你正在以错误的方式处理这个问题。你不能像那样移动非顶级的小部件,因为它会扰乱它们的父布局。要将小部件从一个父级DnD到另一个父级DnD,必须通过DnD框架完成:当拖动开始时,隐藏小部件,将其从父级布局中取消挂钩;在目标小部件的drop事件中,将拖动的小部件添加到布局中,并使其可见。好的,我来看看DnD框架。对我来说,这似乎是DnD最简单的解决方案