2011-12-08 10 views
1

QTreeWidget이 포함 된 프로젝트에서 작업하고 있습니다. 이 위젯에는 하위 노드가있는 상위 노드와 다른 형제 노드가 있습니다. 각 노드에 첨부 된 이름은 정수와 정수 형식의 고유 한 ID이됩니다.QTreeWidget 및 PyQt : 파일에서 데이터를 저장하고 다시 읽는 방법

..... 이제 QTreeWidget의 모든 노드를 디스크에 저장하는 데 사용할 수있는 방법은 무엇이며 사용해야합니까?

내가 할 수있는 것은 트리를 가로 지르고 각 노드를 sqlite DB에 저장하는 것이다. 나는 나무에있는 것과 똑같은 순서로 이미 그것을 할 수 있습니다. ...... QTreeWidget 및 관련 QTreeWidgetItem 개체에는 다른 노드를 삽입 할 때 사용할 수있는 유니크 인덱스가 없습니다.

트리를 다시 작성할 때 하위 항목은 부모/조상 (트리가 트리에 있음)에 연결해야합니다. 그렇게하기 위해서 나는 배열 안에 (부모 이름, parentID) 같은 나무에 이미 추가 된 부모와 그들의 ID을 추적합니다. parentIDQTreeWidget/WidgetItem 안에있는 노드로 위치와 아무런 관련이 없습니다. 그것은 나 자신에 의해 생성되고 어떤 종류의 태그처럼 QTreeWidget/QTreeWidgetItem이 제공하지 않기 때문에 sqlite db를 노드의 이름과 함께 insight에 저장합니다.

  • QTreeWidget
  • 을 그 부모를 선택, 내가

    1. 가 SQLite는 DB에서 ParentID 가지고 올바른 부모,
    2. 배열 또는 같은 IDQTreeWidget 검색을 확인하려면
    3. treeview에 부모 노드에 sqlite db 항목을 자식 노드로 추가하십시오.

    그러나 때문에 검색의, 노드가 추가되고 있기 때문에 주위에 노드를 삽입 사용할 수있는 QTreeWidget/WidgetItem 내부에 누락 된 인덱스의 때마다이 방법을 서투른 느낀다.

    나는 이것이 훨씬 더 우아하고 자원 집약적이어야한다는 것을 알고있다. 정확한 코딩 예제를 찾고 있지는 않지만, 사용하려는 메서드 및 속성에 대한 아이디어와 힌트를 더 얻으려면 QTreeWidgetQTreeWidgetItem에서 더 많이 찾으십시오.

    아이디어가 있으십니까?

    답변

    0

    TreewidgetItem의 data 속성을 사용하여이 값을 설정하여 관리했습니다. 그 값을 하나 또는 그 이상의 TreewidgetItem을 찾기 위해 참조로 사용하면 완전한 트리를 쉽게 저장할 수 있습니다.