c++ - 基于文件路径/名称创建 QTreeWidget 目录?

标签 c++ qt qtgui qstring qtreewidget

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

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

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

http://i.stack.imgur.com/oIzlp.png

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

感谢您的宝贵时间:)

最佳答案

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

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();
}

主程序

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

构建并运行

qmake && make && ./main

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

关于c++ - 基于文件路径/名称创建 QTreeWidget 目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27585077/

相关文章:

c++ - 用于编译 C/C++ 项目的远程基于 linux 的机器的工具

c++ - Qt drawPixmap 没有绘制出我期望的内容

c++ - 如何在没有持久索引损坏/重复的情况下使用 beginMoveRows 进行排序?

c++ - 从 Qt 中的 QMainWindow 的构造函数启动一个新线程

c++ - 输出函数 C++ 的问题

c++ - 在用户上下文中从守护进程启动代理

c++ - 以 float 组形式访问图像像素

c++ - 为什么不显示 QGraphicsView

c++ - Qt:如何使半透明、无窗口、无边框的窗口可拖动?

c++ - Qt:在表单上添加文件选择字段(QLineEdit 和 "browse"按钮)