【问题标题】:Show files list in QTreeView as a tree在 QTreeView 中将文件列表显示为树
【发布时间】:2016-06-16 20:33:45
【问题描述】:

有没有一种简单的方法可以使 QTreeView 中的一些文件 QStringList 显示为树? 当然,我们可以用“/”分割每条路径,并在 QStandardItemModel 中执行一些类似 appendRow 的操作并获取结果。但我认为必须有一个更简单的方法。 例如,我们有这样的文件列表(QStringList):

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

结果必须是这样的 QTreeView:

【问题讨论】:

    标签: qt model-view-controller qtreeview


    【解决方案1】:

    有没有一种简单的方法可以让一些文件的 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);
    

    ...或者如果需要,您可以自己指定更好的过滤器。

    【讨论】:

    • 谢谢,好吧.. 无论如何,我将不得不制作树结构)想了解您的链接和示例
    • 文件列表来自 zip 文件 (QuaZip)。所以我尝试像资源管理器一样在树视图中显示它们
    • 是的,你有一些数据结构练习。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-25
    • 1970-01-01
    相关资源
    最近更新 更多