QAbstractTableModel과 QAbstractListModel의 업데이트 시 각각 동작이 다릅니다.

kjh27814의 이미지

안녕하세요.

개발 중 의문점이 생겨 질문 올립니다.

지금 개발하는 프로그램에 QAbstractTableModel을 상속받은 Custom Model이 하나 있고 (QTableView에 등록, 이하 A)

QAbstractListModel을 상속받은 Cumstom Model이 있습니다. (QListView에 등록, 이하 B)

B는 데이터만 조작 후 dataChanged()함수를 호출하면 알아서 목록에 표시가 되는데

A는 dataChanged()함수를 호출 해도 insertRows와 removeRows를 수동으로 호출 해줘야(추가/삭제한 데이터의 갯수만큼) 목록에 표시가 됩니다.

디버거를 돌려봤으나 dataChanged()함수 호출 시 Index의 문제는 아니구요.

혹시나 해서 B에 오버라이딩 한 insertRows와 removeRows에 중단점을 걸고 실행해봤으나

업데이트 시 중단점에 걸리지도 않습니다. 내부적으로 시그널 슬롯 형태로 동작하는 것 같은데

해결방법이 없을까요?

답변 부탁딉니다.

klara의 이미지

오버라이딩이 제대로 됬는지 확인해보세요. C++11을 사용하신다면 override키워드를 써보세요.
오버라이딩한다고 써놨는데 인자를 잘못써서 오버로딩한셈이되는 경우가 종종있습니다.

익명 사용자의 이미지

퇴근한데다 만진지 오래되서 기억은 안나는데 qmodelindex를 활용하는게 정석으로 압니다

kjh27814의 이미지

답변 감사합니다.