首页 > 解决方案 > QFileSystemModel::setRootPath 行为似乎与文档不匹配

问题描述

根据 Qt5.11 文档,QFileSystemModel::setRootPath

通过在其上安装文件系统观察程序,将模型正在监视的目录设置为 newPath。对该目录中文件和目录的任何更改都将反映在模型中。

但就我的测试代码而言,其中一部分如下:

auto model = new QFileSystemModel(this);
model->setRootPath("C:/adb");
ui.treeView->setModel(model);

正在监视整个文件系统。即使我在 E 驱动器中进行了更改,我也会注意到视图(模型)中反映了相同的内容。这种行为似乎与文档不同。我在这里想念什么?

标签: qt

解决方案


我假设您的问题与类似,但该答案中的链接已损坏!

所以,这对于模型来说是正确的,相同的文档说:

注意:此功能不会改变模型的结构或修改视图可用的数据。换句话说,模型的“根”没有更改为仅包括 文件系统中由 newPath 指定的目录中的文件和目录。

因此,为了将视图设置为仅显示该路径,您需要将视图设置为模型所需的索引:

QModelIndex idx = model->index(model->rootPath());
ui->treeView->setRootIndex(idx);

推荐阅读