• 欢迎光临~

Qt应用程序使用拖放打开文件

开发技术 开发技术 2022-11-21 次浏览

1.在mainwindow.h文件中添加函数声明:

protected:

void dragEnterEvent(QDragEnterEvent *event) override; // 拖动进入事件

void dropEvent(QDropEvent *event) override; // 放下事件

 

2.在mainwindow.cpp文件中对两个事件处理函数进行定义:

void MainWindow::dragEnterEvent(QDragEnterEvent *event) // 拖动进入事件
{
    if(event->mimeData()->hasUrls())                    // 数据中是否包含URL
        event->acceptProposedAction();                  // 如果是则接收动作
    else event->ignore();                               // 否则忽略该事件
}

void MainWindow::dropEvent(QDropEvent *event)           // 放下事件
{
    const QMimeData *mimeData = event->mimeData();      // 获取MIME数据
    if(mimeData->hasUrls()){                            // 如果数据中包含URL
        QList<QUrl> urlList = mimeData->urls();         // 获取URL列表
        // 将其中第一个URL表示为本地文件路径
        QString fileName = urlList.at(0).toLocalFile();
        if(!fileName.isEmpty()){                        // 如果文件路径不为空
            QFile file(fileName);     // 建立QFile对象并且以只读方式打开该文件
            if(!file.open(QIODevice::ReadOnly)) return;
            QTextStream in(&file);                      // 建立文本流对象
            ui.plainTextEdit->setPlainText(in.readAll());  // 将文件中所有内容读入编辑器
        }
    }
}

3.进入mainwindow.cpp文件,在构造函数中添加一行代码:
setAcceptDrops(true);// 这样主窗口就可以接收放下事件了
程序员灯塔
转载请注明原文链接:Qt应用程序使用拖放打开文件
喜欢 (0)
违法和不良信息举报电话:022-22558618 举报邮箱:dljd@tidljd.com