我有以下代码来列出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);
}

有一件你不应该忘记的事情。从documentation:



因此,您必须等待,直到启动模型后从QFileSystemModel收到directoryLoaded(const QString & path)信号,然后再填写列表。

09-05 06:46