2013-07-15 3 views
0

QTreeView와 QAbstractItemModel을 사용하여 데이터가 트리 구조에서 비롯된보기를 설정하고 있습니다. 그러나 트리 구조 (데이터 소스)에서 노드를 삭제하면 모델보기가 자동으로 조정할 수 없다는 것을 알았고, 잘못된 포인터를 사용하여 어떤 메모리 블록을 가리키는 지 알 수 없습니다. 새로 고침하는 방법이나이 문제를 해결하기 위해해야 ​​할 일을 모릅니다.모델 뷰에서 항목을 삭제하는 방법은 무엇입니까?

답변

3

모델에서 데이터를 삭제하려면 beginRemoveRows()endRemoveRows()을 사용하십시오. beginRemoveRows은 기본 데이터 구조를 변경한다는 것을 모델에 알려줍니다. 그런 다음 구조를 변경하고 완료되면 endRemoveRows으로 전화하십시오. 모델의 기본 구조가 컨테이너에서 최상위 트리 항목을 유지한다고 가정

beginRemoveRows(QModelIndex(), 0, 0); 
m_topLevelNodes.remove(0); 
endRemoveRows(); 

이 첫 번째 최상위 행을 제거 (및 자녀) : endRemoveRows 다음 뷰를 업데이트 알림을 트리거합니다 m_topLevelNodes으로 명명되었습니다.

관련 문제