根据文件路径/名称创建 QTreeWidget 目录?

Posted

技术标签:

【中文标题】根据文件路径/名称创建 QTreeWidget 目录?【英文标题】:Create QTreeWidget directories based on file paths/names? 【发布时间】:2014-12-20 22:51:15 【问题描述】:

在我的项目中,我有一个充满 QStrings 的 QVector,其中包含实际上不存在于任何驱动器上的文件路径/名称:

QVector<QString> fileNames["level.dat", "data/villages.dat", "players/player1.dat"]//etc

我想在我的 QTreeWidget 中创建一个类似于这样的文件目录的树:

我将如何快速有效地创建这样的东西?

感谢您的宝贵时间 :)

【问题讨论】:

【参考方案1】:

此解决方案不会避免重复,因此如果您将来需要,您可以通过添加验证来扩展这段代码。不管怎样,这段代码为我产生了你刚才描述的希望拥有的完全相同的输出。

main.cpp

#include <QTreeWidget>
#include <QStringList>
#include <QApplication>

int main(int argc, char **argv)

    QApplication application(argc, argv);
    QStringList fileNames"level.dat", "data/villages.dat", "players/player1.dat";
    QTreeWidget treeWidget;
    treeWidget.setColumnCount(1);

    for (const auto& filename : fileNames) 
        QTreeWidgetItem *parentTreeItem = new QTreeWidgetItem(&treeWidget);
        parentTreeItem->setText(0, filename.split('/').first());
        QStringList filenameParts = filename.split('/').mid(1);
        for (const auto& filenamePart : filenameParts) 
            QTreeWidgetItem *treeItem = new QTreeWidgetItem();
            treeItem->setText(0, filenamePart);
            parentTreeItem->addChild(treeItem);
            parentTreeItem = treeItem;
        
    

    treeWidget.show();
    return application.exec();

main.pro

TEMPLATE = app
TARGET = main
QT += widgets
CONFIG += c++14
SOURCES += main.cpp

构建并运行

qmake && make && ./main

在站点节点上:您应该使用 QStringList 而不是 QVector。此外,您当前的初始化尝试肯定会导致编译器错误。那是无效的初始化。

【讨论】:

谢谢。我已经切换到 QStringList。我写的问题中包含的初始化并不是我实际初始化文件名​​的方式。我收到很多语法错误:146:错误:C2143:语法错误:缺少','之前':' 我已经修复了语法问题,与 C++11 有关。是的,看起来我必须添加重复检查。谢谢:) 如果您不介意,您将如何检查重复项?

以上是关于根据文件路径/名称创建 QTreeWidget 目录?的主要内容,如果未能解决你的问题,请参考以下文章

在 PyQt 中将 QTreeWidget 转换为嵌套字典

如何更新/刷新 qTreewidget?

图标点击 Qt QTreeWidget

IDEA创建一个JavaWeb项目

Powershell:根据逻辑驱动器名称或文件路径提取物理磁盘属性[重复]

Linux根据名称长度查找文件和文件夹但输出完整路径