簡體   English   中英

Qt-QFileSystemModel如何獲取文件夾中的文件(菜鳥)

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

我有以下代碼來列出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(obsolete)不同,QFileSystemModel使用單獨的線程填充自身,因此不會在查詢文件系統時導致主線程掛起。 直到模型填充目錄之前,對rowCount()的調用將返回0。

因此,您必須等到初始化模型后,再從QFileSystemModel收到directoryLoaded(const QString & path)信號,然后填寫列表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM