2012-02-28 4 views
3

QTreeView를 사용하여 표시 할 중첩 데이터 구조가 있습니다.중첩 벡터의 Qt 사용자 정의 트리 모델

class Image 
{ 
public: 
    ... 
    std::vector<Filter> filter_; 
}; 

typedef std::vector<Image> Gallery; 
typedef std::vector<Gallery> Galleries; 

QTreeView이 같은 MultiGallery를 표시해야합니다 :

의 나는 이런 식으로 뭔가있어 가정 해 봅시다

Gallery1 
    |_____Image1 
    |_____Image2 
    |_____Image3 
Gallery2 
    |_____Image1 
    |  |_____Filter1 
    |  |_____Filter2 
    |_____Image2 

내가 Qt는 모델보기 예제를 읽기, 내가가 알고 treodemel을 생성하고 멤버 함수를 구현하기 위해 QAbstractItemModel에서 파생됩니다 :

나는 이것들을 구현하는 최선의 방법, 특히 인덱스 함수를 모른다.

답변

1

주요 아이디어는 인덱스 (즉, 행, 열 및 내부 ID 또는 내부 포인터)를 사용하면 항목과 그 부모 모두 인 을 식별 할 수 있어야한다는 것입니다.

데이터 구조가이 요구 사항에 맞지 않습니다. 상위 오브젝트에 대한 링크를 오브젝트에 추가하거나이 보조 정보를 저장하는 보조 구조를 사용해야합니다.

그런 다음 색인에 항목 (또는 보조 구조에 대한 포인터 또는 보조 구조의 구조에 대한 보조 색인)에 대한 포인터를 저장할 수 있습니다.

관련 문제