qt实现拖拽label的代码
时间: 2023-06-02 20:08:25 浏览: 222
以下是 Qt 实现拖拽 label 的代码:
```cpp
void MyLabel::mousePressEvent(QMouseEvent *event)
{
if(event->button() == Qt::LeftButton)
{
m_dragged = true;
m_startPos = event->pos();
}
}
void MyLabel::mouseMoveEvent(QMouseEvent *event)
{
if(event->buttons() & Qt::LeftButton && m_dragged)
{
int distance = (event->pos() - m_startPos).manhattanLength();
if(distance >= QApplication::startDragDistance())
{
QDrag *drag = new QDrag(this);
QMimeData *mime = new QMimeData;
mime->setText(text());
drag->setMimeData(mime);
drag->exec(Qt::CopyAction | Qt::MoveAction);
m_dragged = false;
}
}
}
void MyLabel::mouseReleaseEvent(QMouseEvent *event)
{
Q_UNUSED(event)
m_dragged = false;
}
```
以上代码实现了鼠标在 label 上的拖拽操作,将 label 内字符串作为 MIME 数据拖放到其他应用程序中。注意,这只是样例代码,可能需要根据具体情况进行修改。
阅读全文