Qt中的拖放事件
文章目錄
- 1 Qt中的拖放事件
- 1.1 拖放事件簡(jiǎn)介
- 1.2 自定義拖放事件的步驟
1 Qt中的拖放事件
1.1 拖放事件簡(jiǎn)介
拖放事件:
- 拖放一個(gè)文件進(jìn)入窗口時(shí)將觸發(fā)拖放事件。
- 每一個(gè)QWidget對(duì)象都能處理拖放事件。
- 拖放事件的處理函數(shù)為:
- void dragEnterEvent(QDragEnterEvent* e);
- void dropEvent(QDropEvent* e);
拖放事件中的QMimeData:
- QMimeData是Qt中的多媒體數(shù)據(jù)類。
- 拖放事件通過(guò)QMimeData對(duì)象傳遞數(shù)據(jù)。
- QMimeData支持多種不同類型的多媒體數(shù)據(jù)。
常用MIME類型數(shù)據(jù)處理函數(shù):
1.2 自定義拖放事件的步驟
步驟如下:
- 期望數(shù)據(jù):e->acceptProposedAction();
- 其它數(shù)據(jù):e->ignore();
- 期望數(shù)據(jù):從事件對(duì)象中獲取MIME數(shù)據(jù)并處理。
- 其它數(shù)據(jù):e->ignore();
編程實(shí)驗(yàn):拖放事件初探
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(); }參考資料:
總結(jié)