代码如下:
dirModel = new QFileSystemModel;
dirModel->setFilter(QDir::Dirs | QDir::NoDotAndDotDot);
dirModel->setRootPath(QDir::homePath());
dirTreeView->setModel(dirModel);
fileModel = new QFileSystemModel;
fileModel->setFilter(QDir::Files);
fileModel->setRootPath(QDir::homePath());
proxyModel = new QSortFilterProxyModel;
proxyModel->setSourceModel(fileModel);
fileListView = new QListView;
fileListView->setModel(proxyModel);
然后让dirTreeView双击时关联on_dirTreeView_clicked()函数:
void MainWindow::on_dirTreeView_clicked(QModelIndex index)
{
QModelIndex filePathIndex = dirModel->index(index.row(), 0, index.parent());
QString filePath = dirModel->filePath(filePathIndex);
fileListView->setRootIndex(proxyModel->mapFromSource(fileModel->setRootPath(filePath)));
}
现在出现一个问题,运行程序时,第一次在dirTreeView上点击C盘时,fileListView只显示C盘的文件,而过滤掉文件夹。
但如果在dirTreeView上双击C盘的任意一个文件夹,然后再双击C盘,fileListView就会显示刚才点击的文件夹和C盘下所有文件,也就是说fileListView没有全部过滤掉文件夹,这是怎么回事?
谢谢!