如何获取未显示在QTreeView中的文件

How to get the files that not appear in the QTreeView

本文关键字:QTreeView 文件 显示 何获取 获取      更新时间:2023-10-16

我使用QTreeViewsetFilter()功能,只允许显示目录和驱动程序,但不允许显示文件。

但我想得到没有出现在QTreeView中的文件,并继续显示目录和驱动程序,而QTreeView中没有文件。

QFileSystemModel dirsModel = new QFileSystemModel;
dirsModel->setRootPath("");
ui->treeView->setModel(dirsModel);
dirsModel->setFilter(QDir::AllDirs | QDir::NoDotAndDotDot);

我该怎么做

正如我前面所说,您需要获得entryList。例如:

void MainWindow::on_pushButton_clicked()
{
    QModelIndex ind = ui->treeView->currentIndex();
    QFileSystemModel *sys = qobject_cast<QFileSystemModel*>( ui->treeView->model());
    QString path = sys->filePath(ind);
    qDebug() << path;
    QDir dir(path);
    QStringList files = dir.entryList(QStringList(), QDir::Files);
    if(!files.size())
         qDebug()<< "Empty";
    else
        for(int i=0 ; i<files.size();i++)
            qDebug() << files.at(i);
}

我们在这里使用QFileSystemModel只是为了获得电流路径,entryList与此完全分离。