Qt 从QDropEvent检索所有文件路径

Qt 从QDropEvent检索所有文件路径,qt,Qt,我在我的软件中实现了拖放。基本上我有一个包含文件路径的QTableView。用户必须能够在QTableView中拖放文件才能添加它们 我已经完成了大部分工作,但是我一直在迭代qdropent对象中包含的所有路径。我必须实现dropEvent方法 void Generous::dropEvent(QDropEvent *dropEvent) { QStringList filePathList; // Way to iterate dropEvent and append eac

我在我的软件中实现了拖放。基本上我有一个包含文件路径的QTableView。用户必须能够在QTableView中拖放文件才能添加它们

我已经完成了大部分工作,但是我一直在迭代qdropent对象中包含的所有路径。我必须实现
dropEvent
方法

void Generous::dropEvent(QDropEvent *dropEvent) {
    QStringList filePathList;

    // Way to iterate dropEvent and append each file path to filePathList.

    addFilesToListView(filePathList);
}

我该怎么做呢?

我猜使用文件路径的拖放操作会使用MIME类型
text/uri列表

如果这是真的,您应该能够像这样检索数据:

if (dropEvent->mimeData()->hasUrls())
{
    foreach (QUrl url, dropEvent->mimeData()->urls())
    {
        filePathList << url.toLocalFile();
    }
}
if(dropEvent->mimeData()->hasURL())
{
foreach(QUrl url,dropEvent->mimeData()->url())
{
filePathList mimeData()->formats();

qDebug()formats()您还可以创建一个全局列表,该列表将在每个dropevent上不断追加文件路径。因此,最后您将拥有一个完整的路径列表

QStringList availableMimeTypes = dropEvent->mimeData()->formats();
qDebug() << "available MIME types:" << dropEvent->mimeData()->formats() << "\n";

foreach(QString mimeType, availableMimeTypes)
{
    qDebug() << "data for MIME type" << mimeType << " :";
    qDebug() << dropEvent->mimeData()->data(mimeType) << "\n";
}