Qt中的拖放事件
文章目錄
- 1 Qt中的拖放事件
- 1.1 拖放事件簡介
- 1.2 自定義拖放事件的步驟
1 Qt中的拖放事件
1.1 拖放事件簡介
拖放事件:
- 拖放一個文件進入窗口時將觸發拖放事件。
- 每一個QWidget對象都能處理拖放事件。
- 拖放事件的處理函數為:
- void dragEnterEvent(QDragEnterEvent* e);
- void dropEvent(QDropEvent* e);
拖放事件中的QMimeData:
- QMimeData是Qt中的多媒體數據類。
- 拖放事件通過QMimeData對象傳遞數據。
- QMimeData支持多種不同類型的多媒體數據。
常用MIME類型數據處理函數:
1.2 自定義拖放事件的步驟
步驟如下:
- 期望數據:e->acceptProposedAction();
- 其它數據:e->ignore();
- 期望數據:從事件對象中獲取MIME數據并處理。
- 其它數據:e->ignore();
編程實驗:拖放事件初探
WIdget.h:
Widget.cpp:
#include "Widget.h" #include <QDragEnterEvent> #include <QDropEvent> #include <QDebug> #include <QList> #include <QUrl>Widget::Widget(QWidget *parent) : QWidget(parent) {setAcceptDrops(true); }void Widget::dragEnterEvent(QDragEnterEvent* e) {if( e->mimeData()->hasUrls() ){e->acceptProposedAction();}else{e->ignore();} }void Widget::dropEvent(QDropEvent* e) {if( e->mimeData()->hasUrls() ){QList<QUrl> list = e->mimeData()->urls();for(int i=0; i<list.count(); i++){qDebug() << list[i].toLocalFile();}}else{e->ignore();} }Widget::~Widget() {}main.cpp:
#include <QtGui/QApplication> #include "Widget.h"int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); }參考資料:
總結