1

所以,我使用的是 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)来在另一个文件夹中添加文件夹吗?

4

1 回答 1

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 中实现了类似的东西 :)

于 2012-08-23T06:22:18.117 回答