- 拖拽端处理:
第一步
cpp
setAcceptDrops(true); // 允许拖拽
鼠标点击拖拽处理:
cpp
void WidgetAdd::mousePressEvent(QMouseEvent *event){
QDrag *drag = new QDrag(this);
QMimeData *mimeData = new QMimeData;
// 将当前 Widget 的标识作为 MIME 数据传递(可以根据需要更改)
mimeData->setText(drawText);
drag->setMimeData(mimeData);
// 开始拖拽
drag->exec();
}
接收端:
cpp
setAcceptDrops(true); // 允许丢弃
cpp
void WidgetRecv::dragEnterEvent(QDragEnterEvent *event)
{
if (event->mimeData()->hasText()) {
event->acceptProposedAction(); // 接受拖拽
}
}
void WidgetRecv::dropEvent(QDropEvent *event)
{
if (event->mimeData()->hasText()) {
QString text = event->mimeData()->text();
// 处理接收到的内容
event->acceptProposedAction(); // 确认丢弃
}
}