많은 항목이있는 사용자 정의 트리 모델이 있습니다. 최상위 레벨 아래 첫 번째 레벨에는 1000000 개 이상의 항목이 있습니다. QTreeView
에서이 레벨을 확장하면 항목이 보이지 않더라도이 항목 각각에 대해 model.hasChildren()
이 호출됩니다 (아래로 스크롤해야 볼 수 있습니다). 문제는 내 함수 hasChildren()
이 특히 백만 번 호출 될 때 약간의 시간이 걸린다는 것입니다 (PySide/PyQt에서 약 10 초 소요). 내 질문은 다음과 같습니다.QTreeView는 보이지 않는 항목에 대해서도 QAbstractItemModel :: hasChildren()을 호출합니다.
1) 항목이 확장 가능해야하는지 (어린이가있는 경우) 여부를 알아야하기 때문에 hasChildren()
이 표시 항목에 대해 호출됨을 이해합니다. 그러나 왜 보이지 않는 항목 (가시 범위 안에 있지 않고 아래로 스크롤 한 후에 만 볼 수있는 항목)이 필요합니까? 내보기에서 그것은 항목이 보이게 될 때만 호출되어야합니다. 나는 somethig를 놓치고 있냐?
2)이 문제를 해결하려면 어떻게합니까?
[모델 서브 클래 싱 참조] (https://doc.qt.io/qt-4.8/model-view-programming.html#model-subclassing-reference)의 "모델 데이터의 지연 채우기"섹션을 읽었습니다. ? – ekhumoro