Qt - QFileSystemModel如何在文件夹中获取文件(Noob)

Qt - QFileSystemModel How to Get Files in Folder (Noob)

本文关键字:文件 获取 Noob 文件夹 QFileSystemModel Qt      更新时间:2023-10-16

我有以下代码来列出listView中的文件:

fileModel = new QFileSystemModel(this);
ui->listView->setModel(fileModel);
ui->listView->setRootIndex(fileModel->setRootPath(filePath));

我想得到一个列表/映射到路径中的文件。如何做到这一点?

下面的代码片段可以满足您的要求:

QList<QString> path_list;
QModelIndex parentIndex = fileModel->index(filePath);
int numRows = fileModel->rowCount(parentIndex);
for (int row = 0; row < numRows; ++row) {
    QModelIndex childIndex = fileModel->index(row, 0, parentIndex);
    QString path = fileModel->data(childIndex).toString();
    path_list.append(path);
}

有一件事你不应该忘记。来自文档:

不像QDirModel(过时的),QFileSystemModel使用一个单独的线程来填充它自己,这样它就不会导致主线程挂起正在查询文件系统。调用rowCount()将返回0,直到模型填充一个目录。

因此,在您初始化模型之后,您必须等待从QFileSystemModel接收到directoryLoaded(const QString & path)信号,然后填充您的列表。