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

时间:2014-12-20 22:51:15

标签: c++ qt qtgui qstring qtreewidget

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

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

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

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

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

感谢您的时间:)

1 个答案:

答案 0 :(得分:2)

此解决方案不会避免重复,因此如果您将来需要,可以通过添加valiation来扩展这段代码。无论如何,这段代码为我提供了你刚才描述过的确切的ame输出。

的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。此外,您当前的初始化尝试肯定会导致编译器错误。那是无效的初始化。