QT 拖拽写法
时间: 2023-07-04 14:08:43 浏览: 89
Qt 实现拖拽效果
QT 拖拽可以通过继承 QDrag 和 QMimeData 类来实现。具体步骤如下:
1. 在拖动源窗口中,重写 QWidget 的 mousePressEvent() 方法,当鼠标左键按下时,创建 QDrag 对象并设置拖拽的数据和图像。
```cpp
void MyWidget::mousePressEvent(QMouseEvent *event)
{
if (event->button() == Qt::LeftButton)
{
QDrag *drag = new QDrag(this);
QMimeData *mimeData = new QMimeData;
// 设置拖拽的数据和图像
drag->setPixmap(QPixmap(":/image/image.png"));
mimeData->setText("Hello World!");
drag->setMimeData(mimeData);
// 开始拖拽操作
drag->exec();
}
}
```
2. 在目标窗口中,重写 QWidget 的 dragEnterEvent() 和 dropEvent() 方法,分别处理拖拽进入和放置事件。
```cpp
void MyWidget::dragEnterEvent(QDragEnterEvent *event)
{
if (event->mimeData()->hasText())
{
event->acceptProposedAction();
}
}
void MyWidget::dropEvent(QDropEvent *event)
{
if (event->mimeData()->hasText())
{
QString text = event->mimeData()->text();
// 处理拖拽放置事件
}
}
```
以上是一个简单的实现,你可以根据自己的需求对拖拽进行更加复杂的处理。
阅读全文