[QT4]拖放文件

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(); }

你可能感兴趣的:([QT4]拖放文件)