qt拖拽事件簡單例項
阿新 • • 發佈:2018-11-04
話不多說直接上程式碼,一看就懂
注意:當使用管理員許可權執行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); }