2010-05-22 5 views
2

저는 IRC 클라이언트를 쓰고 있습니다 (또 다른 예). 긴 이야기가 짧다. 내가 네트워크, 채널 및 주소위한 것 3 개 가지 목록보기를Qt에서 복잡한 트리 모델 만들기

 
Identity 
    Networks 
     Channels 
     Addresses 

:이 목록을 유지하는 서버 대화 을 쓰고 있어요. 사용자가 ID (콤보 상자)를 변경할 때. 네트워크 목록보기는 해당 특정 ID에 대한 모든 네트워크를 조회합니다. 네트워크를로드 한 후 자동으로 첫 번째 네트워크를 선택한 다음 특정 네트워크에 대한 모든 채널과 주소를로드합니다.

문제는 모든 모델의 메모리와 데이터 로딩을 최소화하기 위해 1 개의 모델에 대해 3 개의 뷰를 갖고 싶다는 것입니다. 따라서 관리가 훨씬 쉬워지고 많은 작업을하지 않아도됩니다.

QColumnView를 보면 똑같은 것입니다. 그러나보기가 서버 대화 상자를 쉽게 통과 할 수 있도록 완전히 다른 탭에 있으므로 정확한 페이지에 있어야 할 필요는 없습니다.

이 복잡성을 처리하는 가장 좋은 방법은 무엇이 될지 궁금합니다. 이 정보는 SQLite 데이터베이스에 저장됩니다. 이미 수업을 추출하여 저장하도록했습니다. 모델링은이 솔루션의 고통스러운 부분입니다.

답변

0

이 작업을 수행하는 가장 좋은 방법은 모델을 동적으로로드하는 것입니다. ComboBox가 ID를 변경할 때 NetworkList의 모든 항목을 삭제하고 나중에 다시 채우고 거기에 있던 모든 네트워크를 삭제하십시오.

1

단일 TreeModel을 만든 다음 QSortFilterProxyModel()을 사용하여 세 가지 다른보기를 표시 할 수 있습니다.