2012-08-23 12 views
1

그래서, 저는 파일 트리를 만드는 QTreeWidget을 사용하고 있습니다. 파일과 폴더를 쉽게 만들 수 있습니다. 그러나 문제는 하위 폴더에 대해 이야기 할 때입니다. 예 :QTreeWidget for File Tree 및 Sub-folders

Folder1 
Folder1/SubFolder1 
Folder1/SubFolder1/SubFolder2 

정확하게 하위 폴더를 어떻게 만듭니 까? 내가 다른 폴더 안에 폴더를 추가하는 또 다른 기능 (addSubFolder 같은)을 만들어야합니다

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. 
} 

: 여기 내 코드는 폴더를 만들입니까?

+4

당신이 QTreeWidget가 필요하십니까 :) 파이썬에서 비슷한 구현, 또는 당신은 또한 QFileSystemModel와 QTreeView를 사용할 수 있을까? 예를 보려면 [link] (http://doc.qt.nokia.com/4.7-snapshot/qtreeview.html#details)를 참조하십시오. –

+4

하위 하위 폴더를 추가 할 때 상위 항목을 알아야합니다. 즉,'m_projectItem'에'addChild() '를하지 말고보기에서 현재 선택된 노드를 찾아야합니다. QFileSystemModel을 제외하고는 실제로 더 나은 선택 일 것입니다. –

답변

2

m_projectItem이 루트 노드라고 가정합니다. 내가

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를 호출하여 트리를 설정하는 다른 방법을 구현하는 것이 유사한 addFolder 방법을 구현하는 것입니다 - 당신의 예를 참조하여, 간단한 정적 형식이 될 수

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

면책 조항 : 나는 코드를 테스트하지 않았습니다 - 최근

+0

좋아요, 알겠습니다. 감사! 어쨌든 하나의 문제가 있습니다. "Hello"라는 폴더가 1 개 있고, 그 폴더 안에 "Hello"라는 다른 폴더가 있다고 가정 해 봅시다. 어떻게 폴더에 넣을 지 알 수 있습니까? – Blastcore

+0

항상 부모 - 자식 관계를 고려해야합니다. 폴더의 이름이 충분하지 않습니다. "Hello"폴더를 만들고 두 번째 "Hello"폴더의 부모로 사용할 QTreeWidgetItem을 가져옵니다. –