2 augusti, 2019 admin

c++ qtableview 예제

우리는 진짜 나무를 제시하고 싶습니다. 우리는 모델을 만들기 위해 위의 예제에서 데이터를 래핑했습니다. 이번에는 QAbstractItemModel을 구현하는 계층 적 데이터에 대한 컨테이너인 QStandardItemModel을 사용합니다. 트리를 표시하려면 QStandardItemModel은 텍스트, 글꼴, 확인란 또는 브러시와 같은 항목의 모든 표준 속성을 보유할 수 있는 QStandardItem로 채워져야 합니다. (파일 소스: 예제/위젯/자습서/모델뷰/1_readonly/main.cpp) 다음은 모델 / 뷰 프로그래밍의 다른 측면을 보여 7 매우 간단하고 독립적 인 응용 프로그램입니다. 소스 코드는 예제/위젯/자습서/modelview 디렉토리 내에서 찾을 수 있습니다. 이제 분리된 모델을 사용하여 응용 프로그램의 성능에 미치는 영향을 확인해야 하므로 뷰에서 data() 메서드를 호출하는 빈도를 추적해 보겠습니다. 뷰가 모델을 호출하는 빈도를 추적하기 위해 오류 출력 스트림에 로그온하는 data() 메서드에 디버그 문을 넣었습니다. 이 작은 예제에서는 data()가 42번 호출됩니다.

필드 위로 커서를 마우스로 가을 때마다 data()가 다시 호출됩니다– 각 셀에 대해 7번. 따라서 data()가 호출되고 비용이 많이 드는 조회 작업이 캐시될 때 데이터를 사용할 수 있는지 확인하는 것이 중요합니다. Qt, Qt, QTableWidget, QTableWidget 예제, QTableWidget 및 관계형 테이블 모델 예제는 QSqlRelationalDelegate와 함께 QSqlRelationalTableModel을 사용하여 외래 키 지원을 제공하는 테이블을 사용하는 방법을 보여 줍니다. 데모는 코드에 대해 연습이 제공되지 않는다는 점을 제외하면 예제와 유사합니다. 데모는 일반적으로 예제보다 기능이 더 많이 있습니다. 어댑터의 또 다른 예는 QCompleter입니다. Qt는 QComboBox 및 아래와 같이 QLineEdit와 같은 Qt 위젯에서 자동 완성을 제공하기위한 QCompleter를 가지고 있습니다. QCompleter는 모델을 데이터 원본으로 사용합니다. 여러 뷰에 대해 데이터 원본과 동일한 모델을 사용할 수 있습니다. 사용자가 뷰 중 하나를 통해 모델을 편집하면 다른 뷰는 변경 내용을 즉시 반영합니다. 테이블 모델 예제에서는 작동 방식을 보여 주며, 이 예제에서는 작동 방식을 보여 주실 수 있습니다.

지금까지의 모든 예제에서 데이터는 셀의 텍스트 또는 확인란으로 표시되고 텍스트 또는 확인란으로 편집됩니다. 이러한 프레젠테이션 및 편집 서비스를 제공하는 구성 요소를 대리자라고 합니다. 뷰에서 기본 대리자를 사용하기 때문에 대리자 작업을 시작할 뿐입니다. 그러나 다른 편집기 (예 : 슬라이더 또는 드롭 다운 목록)를 원한다고 가정하거나 데이터를 그래픽으로 표시한다고 상상해보십시오. 별이 등급을 표시하는 데 사용되는 별 대리자라는 예제를 살펴보겠습니다.