qtreeview 예제

이 예제에서는 모델/뷰 프레임워크의 다른 클래스와 함께 사용할 수 있는 간단한 항목 기반 트리 모델을 구현하는 방법을 보여 주며 있습니다. 이 모델은 편집 가능한 항목, 사용자 지정 헤더 및 행과 열을 삽입하고 제거하는 기능을 지원합니다. 이러한 기능을 사용하면 새 자식 항목을 삽입할 수도 있으며 이는 지원 예제 코드에 표시됩니다. 단순 트리 모델 예제와 마찬가지로 TreeModel은 모델 인덱스를 가져 와서 해당 TreeItem을 찾고 부모 및 자식에 해당하는 모델 인덱스를 반환할 수 있어야 합니다. 트리 모델을 구현하기 전에 데이터가 외부 원본에서 제공되는지 또는 모델 자체 내에서 유지 관리될지 여부를 고려해야 합니다. 이 예제에서는 외부 원본에서 데이터를 패키징하는 방법을 논의하는 대신 데이터를 보유하는 내부 구조를 구현합니다. boost::variant에 대한 몇 마디, 나는 최근에 람다와 일반 방문자 클래스가 C ++14에서 어떻게 보일 수 있는지 보여 주었다, 불행하게도 나는 C ++ 11와 함께 작동합니다. 따라서 현재 모든 방문자 클래스는 C ++14까지 사용할 수없는 일반 버전을 사용하는 대신 피용 및 붙여 넣기 일 뿐입니다. 또한 부스트 1.58을 사용하면 람다(lambdas)를 방문자로 사용할 수 있지만 이 기능은 다시 C++14에 불과합니다. 예를 들어, 이것은 nameVisitor 클래스, imlpement는 getName 메서드를 호출 하는 일반 호출 연산자: 각 항목은 해당 행 번호를 부여 하는 경우 해당 자식 항목 중 하나 반환할 수 있습니다. 예를 들어 위의 다이어그램에서 “A”로 표시된 항목은 행 = 0이 있는 루트 항목의 자식에 해당하며, “B” 항목은 행 = 1이 있는 “A” 항목의 자식이며 “C” 항목은 행 = 1이 있는 루트 항목의 자식입니다. 표시된 예제에서는 하위() 함수를 호출하여 루트 항목에서 두 개의 최상위 항목A와 B를 가져올 수 있으며, 이러한 각 항목은 항목 A에 대해서만 표시되지만 부모() 함수에서 루트 노드를 반환합니다.

아래 예제에서는 3개의 최상위 트리 노드를 구성하고 각 노드에는 그림과 같이 두 개의 자식 트리 노드가 있습니다. 각 TreeItem은 트리 뷰의 항목 행에 대한 데이터를 보유하도록 설계되어 각 열에 표시된 데이터에 해당하는 값 목록을 포함합니다. 파이썬 2.7.10으로 잘 작동하여 PySide를 PyQt4로 대체했습니다.