C++ qt-阻力和阻力;下降:帧消失
我将在两个QGroubBox之间创建一个拖放。每个都包含DragDropFrame,它们是QFrame的一个子类,现在我有一个问题,当我想从GroupBox中释放DragDropFrame时,它会立即消失 拖缆架: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
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最简单的解决方案