我使用QTreeView
和setFilter()
功能,只允许显示目录和驱动程序,但不允许显示文件。
但我想得到没有出现在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
与此完全分离。