문제

PYQT 4.4를 사용하고 있습니다.

일부 사진을 사용하여 가장 잘 표시됩니다. 모든 노드에는 0에서 99 사이의 잎이 있어야합니다. canFetchMore() 그리고 fetchMore(). 그러나 어떤 이유로 나에게 알려지지 않은 이유는 루트 노드에서만 작동합니다. (그림 1)

노드를 붕괴시키고 확장하면 추가 10 값을로드합니다. (그림 2 & 3)

코드가 전화 당 5 개만로드하기 때문에 10 값을로드하는 것도 이상합니다. fetchMore(), 코드가 더 많은 데이터를로드하기 위해 중지되기 전에 2 번 호출됩니다.

Screenshot 1 Screenshot 2 Screenshot 3

나는 문제를 보여주기 위해 작은 예를 썼다. python test.py. http://snipt.org/llh

이 오류의 원인이 무엇인지 아는 사람이 있습니까?

도움이 되었습니까?

해결책

QABSTRANTITEMVIEW 및 QTREEVIEW에 대한 QT 소스 (v4.5, v4.4와 v4.5의 차이는 많이 기대하지는 않지만)를 살펴 보았지만 어린이 노드의 증분 게으른로드를 지원하지 않는다고 생각합니다.

qabstractitemview는 나무의 개념이 없으므로 전화 만 fetchMore() 최상위 인덱스에서. 전화 fetchMore() 언제:

  • 형상이 업데이트됩니다
  • 스크롤 막대가 움직입니다
  • 행이 삽입됩니다
  • 현재 항목은 자동 스크롤 드래그 및 드롭 작업의 결과로 변경됩니다.

qtreeview는 추가로 호출됩니다 fetchMore() 언제:

  • 항목이 확장되었습니다 (이것은 본질적으로 호출하는 유일한 시간입니다. fetchMore() 뿌리가 아닌 지수로)
  • 뷰의 레이아웃은 expandAll() 그리고 collapseAll()

최선의 솔루션은 Qtreeview를 서브 클래스하여 호출하는 것입니다. fetchMore() 적절한 장소와 적절한 지수로.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top