在QTreeView中将文件列表显示为树

时间:2016-06-16 20:33:45

标签: qt model-view-controller qtreeview

有一种简单的方法可以将QTreeView中显示的文件的QStringList作为树吗? 当然我们可以用“/”分割每个路径,并在QStandardItemModel中做一些像appendRow这样的东西并取结果。但我认为必须有一种更简单的方法。 例如,我们有这样的文件列表(QStringList):

"dir/subdir/file.dat",
"dir/app.exe",
"other_dir/file2.dat"

结果必须是这样的QTreeView:

enter image description here

1 个答案:

答案 0 :(得分:0)

  

是否有一种简单的方法可以显示一些文件的QStringList   QTreeView是一棵树吗?

如果数据暗示为QStringList,则建议将其转换为基于TreeItem的数据并使用Qt文档示例"Simple Tree Model Example"。你不能避免以这种或那种方式创建树状结构。使用Qt Creator或在其目录中查找该示例,并查找TreeModel类定义/实现。

如果数据不是来自QStringList或其他形式的内存中集合,而是来自实际文件系统:当然这是非常可行的。您只需要QFileSystemModel和QTreeView。一个可能有些类似的例子here

创建您需要的最小UI并使用模型过滤器:

auto* dirModel = new QFileSystemModel(this);
dirModel->setFilter(QDir::NoDotAndDotDot |
                    QDir::Files | QDir::Dirs);

...或者您可以根据需要指定更好的过滤器。