文件树和子文件夹的QTreeWidget

时间:2012-08-23 04:32:47

标签: qt directory subdirectory qtreewidget filetree

所以,我正在使用的是制作文件树的QTreeWidget。我可以轻松创建文件和文件夹。但是当我们谈论子文件夹时就会出现问题。例如:

Folder1
Folder1/SubFolder1
Folder1/SubFolder1/SubFolder2

我如何准确创建子文件夹?这是我制作文件夹的代码:

void Tree::addFolder(const QString &folderName)
{
    QTreeWidgetItem *item = new QTreeWidgetItem();
    item->setText(0, folderName); // Sets the text.
    m_projectItem->addChild(item); // Adds it to the main path. (It's a QTreeWidgetItem)
    this->expandItem(item); // Expands.
}

我是否需要创建另一个函数(类似addSubFolder)来在另一个文件夹中添加文件夹?

1 个答案:

答案 0 :(得分:2)

我假设m_projectItem是你的根节点。 我会实现类似于

的addFolder方法
QTreeWidgetItem* Tree::addFolder(QTreeWidgetItem* parent, const QString &folderName) {
    QTreeWidgetItem *item = new QTreeWidgetItem();
    item->setText(0, folderName); // Sets the text.
    parent->addChild(item); // Adds it to its parent (It's a QTreeWidgetItem)
    this->expandItem(item); // Expands.
    return item;
}

然后我将实现另一个通过适当调用addFolder来设置树的方法 - 参考你的例子,用最简单的静态形式,这可能是

void Tree::createTree() {
   QWidgetItem* f1  = addFolder(m_projectItem, "Folder1");
   QWidgetItem* sf1 = addFolder(f1, "SubFolder1");
   addFolder(sf1, "SubFolder2");
}

免责声明:我没有测试过代码 - 我最近在Python中实现了类似的东西:)