내 코드에 qtreeview를 채우기위한 버그가 있습니까?
문제
PYQT 4.4를 사용하고 있습니다.
일부 사진을 사용하여 가장 잘 표시됩니다. 모든 노드에는 0에서 99 사이의 잎이 있어야합니다. canFetchMore()
그리고 fetchMore()
. 그러나 어떤 이유로 나에게 알려지지 않은 이유는 루트 노드에서만 작동합니다. (그림 1)
노드를 붕괴시키고 확장하면 추가 10 값을로드합니다. (그림 2 & 3)
코드가 전화 당 5 개만로드하기 때문에 10 값을로드하는 것도 이상합니다. fetchMore()
, 코드가 더 많은 데이터를로드하기 위해 중지되기 전에 2 번 호출됩니다.
나는 문제를 보여주기 위해 작은 예를 썼다. 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()
적절한 장소와 적절한 지수로.
제휴하지 않습니다 StackOverflow