转自:http://blog.youkuaiyun.com/weiren2006/article/details/6083272
1、首先是在头文件中添加2个拖拽事件
void dragEnterEvent(QDragEnterEvent *event);
void dropEvent(QDropEvent *event);
2、函数的的具体操作
2.1、当拖动等文件进入到MainWindow区域时,就会触发dragEnterEvent事件,可以在dragEnterEvent函数中添加判断拖动的东西是否文件,
如果是文件,则接受此事件:event->accept(); 否则忽视之event->ignore();即不响应后续操作。
2.2、当释放文件时,会调用dropEvent函数。
拖放文件的代码实现如下:
- //处理进入拖拽事件
- void MainWindow::dragEnterEvent(QDragEnterEvent *event)
- {
- if(event->mimeData()->hasUrls())
- {
- QString localFile;
- QRegExp rx("//.(bin)$",Qt::CaseInsensitive);
- if (event->mimeData()->urls().count()>1)
- {
- //QMessageBox::warning(this,tr("提示"),tr("选择文件太多"));
- event->ignore();
- return;
- }
- foreach(QUrl url, event->mimeData()->urls())
- {
- localFile = url.toLocalFile();
- if (rx.indexIn(localFile) >= 0)
- {
- event->accept();
- ui.lineEditFileName->setFocus();
- return;
- }
- else
- {
- event->ignore();
- }
- }
- }
- else
- {
- event->ignore();
- }
- }
- //拖拽释放时的处理函数
- void MainWindow::dropEvent(QDropEvent *event)
- {
- QString localFile;
- QUrl url = event->mimeData()->urls().at(0);
- localFile = url.toLocalFile();
- ui.lineEditFileName->setText(localFile);
- ui.pushButtonStart->setFocus();
- }