我正在尝试使用QTreeView
创建一个QFileSystemModel
,它将在树的根索引下显示多个目录树。
我正在使用下面的代码:
QFileSystemModel *model = new QFileSystemModel();
QTreeView *tree = new QTreeView();
model->setRootPath(QDir::rootPath());
tree->setModel(model);
使用此文件树将显示一个项目(文件系统的根目录)。不过,我想做的是能够显示文件系统的根目录,并有几个特定的目录和不相关的子树作为同级。
下面是来自不同应用程序的所需行为的图像。前两项是文件系统中的特定文件夹,其作用类似于快捷方式。最后一项与文件系统无关。
<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9zQXVHUi5wbmcifQ==” alt =“期望的行为”>
我建议创建一个自定义模型,也许是从QAbstractItemModel
派生的,该模型具有一些顶级实体(屏幕外),您可以将多个QFileSystemModels
作为其父级,每个要显示的顶级目录都应包含一个。这将使您可以根据显示的目录类型以不同的方式来操纵每棵树。
您应该能够创建一个临时目录(使用QTemporaryDir),然后在该临时目录中创建create symbolic links,该目录指向您要显示的文件和/或目录。然后使用临时目录的路径作为模型的根路径。