在 QTreeView 中将文件列表显示为树
Show files list in QTreeView as a tree
有没有一种简单的方法可以让一些QStringList文件在QTreeView中显示为树状?
当然,我们可以用“/”分割每条路径,并在 QStandardItemModel 中做一些类似 appendRow 的事情,然后得到一个结果。但我认为必须有一种更简单的方法。
例如,我们有这样的文件列表 (QStringList):
"dir/subdir/file.dat",
"dir/app.exe",
"other_dir/file2.dat"
结果必须是这样的 QTreeView:
Is there an easy way to make some QStringList of files displaying in
QTreeView as a tree?
如果数据隐含为 QStringList
,则建议将其转换为 TreeItem-based data and use Qt documentation example "Simple Tree Model Example". You cannot avoid creating tree-like structure one way or another for that. Find that example with Qt Creator or in its directory and look for TreeModel class definition/implementation.
如果数据不是来自 QStringList 或其他形式的内存中集合,而是来自实际文件系统:当然是非常可行的。您只需要 QFileSystemModel 和 QTreeView。可能有点相似的例子之一 here.
创建您需要的最小 UI 并像这样使用模型过滤器:
auto* dirModel = new QFileSystemModel(this);
dirModel->setFilter(QDir::NoDotAndDotDot |
QDir::Files | QDir::Dirs);
...或者您可以根据需要自行指定更好的过滤器。
有没有一种简单的方法可以让一些QStringList文件在QTreeView中显示为树状? 当然,我们可以用“/”分割每条路径,并在 QStandardItemModel 中做一些类似 appendRow 的事情,然后得到一个结果。但我认为必须有一种更简单的方法。 例如,我们有这样的文件列表 (QStringList):
"dir/subdir/file.dat",
"dir/app.exe",
"other_dir/file2.dat"
结果必须是这样的 QTreeView:
Is there an easy way to make some QStringList of files displaying in QTreeView as a tree?
如果数据隐含为 QStringList
,则建议将其转换为 TreeItem-based data and use Qt documentation example "Simple Tree Model Example". You cannot avoid creating tree-like structure one way or another for that. Find that example with Qt Creator or in its directory and look for TreeModel class definition/implementation.
如果数据不是来自 QStringList 或其他形式的内存中集合,而是来自实际文件系统:当然是非常可行的。您只需要 QFileSystemModel 和 QTreeView。可能有点相似的例子之一 here.
创建您需要的最小 UI 并像这样使用模型过滤器:
auto* dirModel = new QFileSystemModel(this);
dirModel->setFilter(QDir::NoDotAndDotDot |
QDir::Files | QDir::Dirs);
...或者您可以根据需要自行指定更好的过滤器。