QFileSystemModel如何将RootPath设置到linux上的另一个驱动器

Posted

技术标签:

【中文标题】QFileSystemModel如何将RootPath设置到linux上的另一个驱动器【英文标题】:How QFileSystemModel setRootPath to another drive on linux 【发布时间】:2015-11-05 10:17:27 【问题描述】:

我有一个标记为“本地数据”的驱动器安装在“/media/Local Data”。 而我的程序目录也在“/media/Local Data/Programming”中。 我想将“本地数据”设置为 QFileSystemModel 的根路径。 我找不到办法。

这是我的代码:

QFileSystemModel* model = new QFileSystemModel;
model->setRootPath("/media/Local Data");

QTreeView tree;
tree.setRootIndex(model->index("/media/Local Data");
tree.setModel(model);
qDebug() << QDir::currentPath();
// "/media/Local Data/Files/Programming/C++/build-FileSystemModel-Desktop_Qt_5_5_1_GCC_64bit-Debug"

tree.setMinimumSize(900,500);
tree.show();

我收到错误QAbstractItemView::setRootIndex failed : index must be from the currently set model

当我运行程序时,它总是给我根“/”作为根路径。

我怎样才能做到这一点?

【问题讨论】:

【参考方案1】:

该错误与QFileSystemModel 无关。您还没有为视图设置模型。试试这个(未经测试)。

QFileSystemModel* model = new QFileSystemModel;
model->setRootPath("/media/Local Data");

QTreeView* tree = new QTreeView;
tree->setModel(model);
tree->setRootIndex(tree->model()->index(QDir::currentPath()));

【讨论】:

哦。我确实完成了我的问题中没有显示的 setModel 。我会编辑它。 我发现我做错了什么。 setModel()需要在setRootIndex()之前完成

以上是关于QFileSystemModel如何将RootPath设置到linux上的另一个驱动器的主要内容,如果未能解决你的问题,请参考以下文章

如何删除 QFileSystemModel 中修改的大小、类型、日期?

如何按文件名过滤 QFileSystemModel 的文件列表?

如何在 Qt 中使用 QFileSystemModel 设置文本颜色 QTableView?

QFileSystemModel中通过flags函数反应代码的层级思考

如何在 QTreeView 或 QListView 中设置 ItemFlag?

QFileSystemModel只显示名称,不显示size,type,modified