2011-09-13 3 views
4

나는 QAbstractItemModel에 따라 내 모델을 구현 그리고 난 계층 적 데이터를 표시하는 QTreeView로 사용하고 있습니다. 데이터는 sqlite 테이블에 저장됩니다.QTreeView/QAbstractItemModel - 항목을 추가하고 사용 beginInsertRows

내 질문은 하위 노드를 추가 할 때 내가 beginInsertRows를 호출하는 방법입니다. 부모 노드가 10 개 있다고 가정 해 보겠습니다. 그리고 새로운 하위 노드를 추가하고 싶습니다.

나는 이런 식으로 일을 해요 :

beginInsertRows(parentIndex, currentNodesCount, currentNodesCount); 
// actual inserting 
endInsertRows() 

currentNodesCount이 하위 노드의 행 수는 값 (10)을 포함한다. 새 노드가 11 번째 위치에 배치됩니다 (0부터 10까지 계산).

이 논리가 맞습니까?

도움 주셔서 감사합니다.


beginRemoveRows 사용에 대해서도 궁금합니다.

이 정확 :

beginRemoveRows(parentIndex, currentRow, currentRow); 
// delete record 
endRemoveRows(); 

로 CurrentRow 그래 그거야 0

답변

3

부터 계산 제거 된 노드 목록에 위치가 포함되어 있습니다. 이 유일한 문제는

이 되었습니까?

+0

예. 감사합니다. 레코드를 수정 한 후에 뷰를 새로 고치는 방법은 무엇입니까? emit dataChanged (.., ..); ? –

+0

Qt 문서 (http://doc.qt.nokia.com/latest/model-view-programming.html#model-subclassing-reference)에서 모델 서브 클래 싱에 대한 유용한 가이드를 찾을 수 있습니다. "크기 조정 가능한 모델"섹션에서 설명한 것처럼 대부분의 경우 begin **() 및 end **()는 데이터 구조가 변경된 것으로 연결된보기 (또는 다른 구성 요소)에 알리는 데 충분해야합니다. 추신 이 경우 – ixM

+0

경우는 서브 클래스에 대해 언급 "대답"으로 플래그에 질문을 주저하지 마십시오 것은 죽은 링크를 링크에 –

관련 문제