저는 오래된 Delphi/FreePascal/Lazarus 프로그래머입니다. 저는 1 년 동안 Qt와 C++로 프로그래밍하고 있습니다. Qt에서 가장 고통스러운 것은 모델 프로그래밍입니다. 특히 효율적입니다. 예를 들어 QStandardItemModel을 1 백만 레코드로 채우는 데는 15 초 정도 걸리며 700MB의 메모리 사용량과 QTreeView 스크롤은 거의 불가능합니다 (100 % CPU, 각 스크롤은 보이는 항목조차도 검증하지 않는 것 같습니다). 비교를 위해 Lazarus에서 하나의 가상 메소드 OnGetData를 재정의하는 TVirtualTreeView가 있습니다. 인수에서 행 및 열 인덱스를 가져오고 TList (QList와 같은 것) 또는 동적 배열에서 데이터를 반환합니다. 결과 : 1 백만 레코드 = 150 밀리 초, RAM에서 20 메가 바이트, 완전히 책임있는 스크롤 (OnGetData는 보이는 항목에만 호출 됨). 나는 또한 QAbstractItemModel, 많은 코딩을 시도하고 메모리 사용을 줄였다.Qt 모델 대체
내 질문 : 모델 프로그래밍을위한 대안이 있습니까? 몇 달 전에 QTreeView에서 사용자 지정 데이터 집합에 대한 자습서를 보았지만 지금은 찾을 수 없습니다. 그들은 간단한 QList를 사용하고 QTreeView에서 몇 가지 메소드를 오버라이드합니다.
감사합니다.
QStandardItemModel은 오버 헤드가 많은 복잡한 복합 거래입니다. 백만 가지 항목의 경우 맞춤 모델이 필수입니다. 그런 다음 QAIM은 자체 데이터 용 API 일뿐입니다. 하나의 OOTB 옵션은 sqlite와 주식 Qt SQL 모델 일 수 있습니다. – hyde
몇 가지 샘플 코드를 게시 할 수 있습니까? QStandardItemModel은 많은 항목에서 제대로 수행되지 않습니다. [이 질문] (http://stackoverflow.com/q/21159095/1583123)을 참조하십시오. –
또한 모델 - 뷰 시스템은 아마도 Qt의 가장 복잡한 부분이므로 실제 학습이 필요한 큰 과제로 학습하십시오. QAbstractListModel을 서브 클래 싱하는 것과 같은 간단한 작업으로 시작하여 곧바로 QAIM을 서브 클래 싱하는 것으로 넘어 가지 마십시오. – hyde