QTreeWidget для дерева файлов и подпапок

Итак, я использую 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 ответ

Решение

Я предполагаю, что 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:)

Другие вопросы по тегам