qt treeview 예제

단순 트리 모델 예제와 마찬가지로 모델은 단순히 TreeItem 클래스의 인스턴스 컬렉션 주위에 래퍼 역할을 합니다. 각 TreeItem은 트리 뷰의 항목 행에 대한 데이터를 보유하도록 설계되어 각 열에 표시된 데이터에 해당하는 값 목록을 포함합니다. 각 항목은 적절한 행 번호가 주어지면 자식 항목을 반환할 수 있습니다. 예를 들어 위의 다이어그램에서 “A”로 표시된 항목은 행 = 0이 있는 루트 항목의 자식에 해당하며, “B” 항목은 행 = 1이 있는 “A” 항목의 자식이며 “C” 항목은 행 = 1이 있는 루트 항목의 자식입니다. 단순 트리 모델 예제에서는 Qt의 표준 뷰 클래스에서 계층 모델을 사용하는 방법을 보여 주며 있습니다. 파이썬 2.7.10으로 잘 작동하여 PySide를 PyQt4로 대체했습니다. 이 예제를 작성해 주셔서 감사합니다, 그것은 사용자 정의 treeView를 사용하여 가장 좋은 예 중 하나입니다 그림 예제에서, 두 개의 최상위 항목, A와 B, 그것의 자식 () 함수를 호출하여 루트 항목에서 얻을 수 있습니다, 이러한 항목의 각각은 부모 () fu에서 루트 노드를 반환 항목 A에 대해서만 표시됩니다. 이 예제에서는 모델/뷰 프레임워크의 다른 클래스와 함께 사용할 수 있는 간단한 항목 기반 트리 모델을 구현하는 방법을 보여 주며 있습니다. 이 예제에서는 모델의 치수를 변경할 수 있으므로 insertRows(), insertColumns(), removeRows() 및 removeColumns()를 구현해야 합니다.

트리 모델을 구현하기 전에 데이터가 외부 원본에서 제공되는지 또는 모델 자체 내에서 유지 관리될지 여부를 고려해야 합니다. 이 예제에서는 외부 원본에서 데이터를 패키징하는 방법을 논의하는 대신 데이터를 보유하는 내부 구조를 구현합니다. 단순 트리 모델 예제와 마찬가지로 TreeModel은 모델 인덱스를 가져 와서 해당 TreeItem을 찾고 부모 및 자식에 해당하는 모델 인덱스를 반환할 수 있어야 합니다. setupModelData() 함수를 사용하여 모델의 초기 데이터를 설정합니다. 이 함수는 텍스트 파일을 구문 분석하여 모델에서 사용할 텍스트 문자열을 추출하고 데이터와 전체 모델 구조를 모두 기록하는 항목 개체를 만듭니다. 당연히 이 함수는 이 모델과 매우 다른 방식으로 작동합니다. 해당 동작에 대한 다음 설명을 제공하고 자세한 내용은 예제 코드 자체에 판독기를 참조합니다. 이 속성이 true이면 트리뷰는 분기의 확장 및 축소에 애니메이션을 애니메이션합니다. 이 속성이 false이면 트리뷰는 애니메이션을 표시하지 않고 브랜을 즉시 확장하거나 축소합니다. 트리 뷰의 각 항목에는 일반적으로 여러 데이터 열(이 예제의 제목 및 요약)이 포함되어 있으므로 각 항목에 이 정보를 저장하는 것은 자연스러운 것입니다. 간단히 하기 위해 QVariant 개체 목록을 사용하여 항목의 각 열에 대한 데이터를 저장합니다.

아래 예제에서는 3개의 최상위 트리 노드를 구성하고 각 항목에는 그림과 같이 두 개의 자식 트리 노드가 있습니다. 예를 들어 b로 표시되는 정보는 다음 코드를 사용하여 얻을 수 있습니다. 다음 예제에서는 디렉터리의 내용이 QFileSystemModel에서 제공되고 트리로 표시됩니다. 많은 실제 모델은 원시 데이터를 전혀 처리하지 않고 기존 데이터 구조 또는 라이브러리 API로 작업하기만 하면 됩니다. 멋진 예! 유일한 단점은 위의 코멘트에 언급 된 PySide와 PyQt4는 지금까지 조금 오래되었습니다. 파이썬에서 보다 현대적인 QTreeView 예제를 업로드했습니다. 그것은 PyQt5를 기반으로합니다. 어쩌면 누군가가 유용 하게 찾을 수 있습니다 🙂 이 모델은 편집 가능한 항목, 사용자 지정 헤더 및 행과 열을 삽입하고 제거하는 기능을 지원합니다. 이러한 기능을 사용하면 새 자식 항목을 삽입할 수도 있으며 이는 지원 예제 코드에 표시됩니다.