• 4679阅读
  • 0回复

高手请进!问个QSortFilterProxyModel过滤后显示的问题! [复制链接]

上一主题 下一主题
离线风一样
 
只看楼主 倒序阅读 楼主  发表于: 2010-09-10
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
代码如下:
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没有全部过滤掉文件夹,这是怎么回事?

谢谢!
快速回复
限100 字节
 
上一个 下一个