版权声明:未经博主允许,禁止转载 https://blog.csdn.net/Think88666/article/details/83012641
话不多说直接上代码,一看就懂
注意:当使用管理员权限运行qt creator时,程序可能无法检测到拖拽事件!
widget.h 文件
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
protected:
virtual void dropEvent(QDropEvent *event) override;
virtual void dragEnterEvent(QDragEnterEvent *event) override;
virtual void dragLeaveEvent(QDragLeaveEvent *event) override;
virtual void dragMoveEvent(QDragMoveEvent *event) override;
private:
Ui::Widget *ui;
};
widget.cpp 文件
#include "widget.h"
#include "ui_widget.h"
#include <QDragEnterEvent>
#include <QDragLeaveEvent>
#include <QDragMoveEvent>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
this->setAcceptDrops(true);
ui->textEdit->setAcceptDrops(false);
}
Widget::~Widget()
{
delete ui;
}
void Widget::dropEvent(QDropEvent *event)
{
ui->textEdit->setText("QDropEvent");
}
void Widget::dragEnterEvent(QDragEnterEvent *event)
{
ui->textEdit->setText("QDragEnterEvent");
//传递事件
event->acceptProposedAction();
}
void Widget::dragLeaveEvent(QDragLeaveEvent *event)
{
ui->textEdit->setText("QDragLeaveEvent");
}
void Widget::dragMoveEvent(QDragMoveEvent *event)
{
ui->textEdit->setText("QDragMoveEvent");
//通过设置Qt::DrogAction 可以修改拖动过程中默认显示的Copy
/*
enum DropAction {
CopyAction = 0x1,
MoveAction = 0x2,
LinkAction = 0x4,
ActionMask = 0xff,
TargetMoveAction = 0x8002,
IgnoreAction = 0x0
};
*/
event->setDropAction(Qt::MoveAction);
}