Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt QFileSystemModel::setRootPath行为似乎与文档不匹配_Qt - Fatal编程技术网

Qt QFileSystemModel::setRootPath行为似乎与文档不匹配

Qt QFileSystemModel::setRootPath行为似乎与文档不匹配,qt,Qt,根据Qt5.11文档,QFileSystemModel::setRootPath 将模型监视的目录设置为newPath by 在其上安装文件系统监视程序。对文件和文件的任何更改 此目录中的目录将反映在模型中 但就我的测试代码而言,其一部分如下所示: auto model = new QFileSystemModel(this); model->setRootPath("C:/adb"); ui.treeView->setModel(model); 正在监视整个文件系统。即使我在E-

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

将模型监视的目录设置为newPath by 在其上安装文件系统监视程序。对文件和文件的任何更改 此目录中的目录将反映在模型中

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

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

正在监视整个文件系统。即使我在E-drive中进行了更改,我也会注意到视图(模型)中也反映了同样的情况。此行为似乎与文档不同。我在这里遗漏了什么?

我想你的问题与类似,但答案中的链接断了

因此,对于模型来说也是如此,同样的文档说明:

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

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

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

问题不是关于
QTreeView
的内容,而是关于调用
setRootPath
API时安装的
QFileSystemWatcher
。我知道,您的问题是“即使我在E-drive中做了更改,我也会注意到相同的内容会反映在视图中”,上面的文档说明中说“此功能不会修改视图可用的模型或数据”,这意味着您将注意到视图中的更改