还是不能解决 鼠标拖拽时会带着其他按钮一起 的问题
时间: 2023-10-05 12:14:45 浏览: 43
如果在拖拽按钮时会导致其他按钮一起移动,可能是因为你没有正确处理按钮的拖拽事件。在拖拽按钮时,你应该只移动当前按钮,而不是整个父窗口或其他按钮。
以下是一个可能的解决方案,用于在拖拽按钮时只移动当前按钮:
```cpp
void DraggableButton::mousePressEvent(QMouseEvent *event)
{
if (event->button() == Qt::LeftButton)
{
m_dragging = true;
m_dragStartPosition = event->pos();
}
QPushButton::mousePressEvent(event);
}
void DraggableButton::mouseMoveEvent(QMouseEvent *event)
{
if (m_dragging)
{
int distance = (event->pos() - m_dragStartPosition).manhattanLength();
if (distance >= QApplication::startDragDistance())
{
QDrag *drag = new QDrag(this);
QMimeData *mimeData = new QMimeData;
mimeData->setText(text());
drag->setMimeData(mimeData);
drag->exec(Qt::MoveAction);
}
}
QPushButton::mouseMoveEvent(event);
}
```
这段代码实现了按钮的拖拽功能。当鼠标移动距离超过阈值时,会创建一个 QDrag 对象,并设置相应的 MIME 数据。然后通过调用 `drag->exec(Qt::MoveAction)` 开始拖拽操作。
请确保你的 `DraggableButton` 类中有正确的 `mousePressEvent` 和 `mouseMoveEvent` 函数,并根据上述示例进行相应的修改。如果问题仍然存在,请提供更多的代码细节以便更好地帮助你解决问题。