qt qtableview 예제


여러 뷰에 대해 데이터 원본과 동일한 모델을 사용할 수 있습니다. 사용자가 뷰 중 하나를 통해 모델을 편집하면 다른 뷰는 변경 내용을 즉시 반영합니다. 테이블 모델 예제에서는 작동 방식을 보여 주며, 이 예제에서는 작동 방식을 보여 주실 수 있습니다. 행과 열의 수는 MyModel::rowCount() 및 MyModel::columnCount()에서 제공됩니다. 뷰가 셀의 텍스트가 무엇인지 알아야 하는 경우 MyModel::data() 메서드를 호출합니다. 행 및 열 정보는 매개 변수 인덱스로 지정되고 역할은 Qt::DisplayRole로 설정됩니다. 다른 역할은 다음 섹션에서 다룹니다. 이 예제에서는 표시해야 하는 데이터가 생성됩니다. 실제 응용 프로그램에서 MyModel에는 모든 읽기 및 쓰기 작업의 대상으로 사용되는 MyData라는 멤버가 있습니다. 관계형 테이블 모델 예제에서는 QSqlRelationalDelegate와 함께 QSqlRelationalTableModel을 사용하여 테이블에 외래 키 지원을 제공하는 방법을 보여 줍니다.

이제 분리된 모델을 사용하여 응용 프로그램의 성능에 미치는 영향을 확인해야 하므로 뷰에서 data() 메서드를 호출하는 빈도를 추적해 보겠습니다. 뷰가 모델을 호출하는 빈도를 추적하기 위해 오류 출력 스트림에 로그온하는 data() 메서드에 디버그 문을 넣었습니다. 이 작은 예제에서는 data()가 42번 호출됩니다. 필드 위로 커서를 마우스로 가을 때마다 data()가 다시 호출됩니다– 각 셀에 대해 7번. 따라서 data()가 호출되고 비용이 많이 드는 조회 작업이 캐시될 때 데이터를 사용할 수 있는지 확인하는 것이 중요합니다. (파일 소스: 예제/위젯/자습서/모델뷰/1_readonly/main.cpp) 모델/뷰 응용 프로그램을 개발하려면 어디서부터 시작해야 합니까? 간단한 예제로 시작하여 단계별로 확장하는 것이 좋습니다. 이렇게 하면 아키텍처를 훨씬 쉽게 이해할 수 있습니다. IDE를 호출하기 전에 모델/뷰 아키텍처를 자세히 이해하려고 노력하는 것은 많은 개발자에게 덜 편리하다는 것이 입증되었습니다. 데모 데이터가 있는 간단한 모델/보기 응용 프로그램으로 시작하는 것이 훨씬 쉽습니다. 한번 사용해 보세요! 아래 예제의 데이터를 사용자 고유의 데이터로 바꾸기만 하면 됩니다. 뷰 클래스는 맨 위에 헤더를 표시하여 열에 레이블을 지정합니다.

헤더 텍스트를 변경하려면 모델에서 setHeaderData()를 호출합니다. 헤더의 레이블은 기본적으로 테이블의 필드 이름으로 설정됩니다. 예: 지금까지의 모든 예제에서 데이터는 셀의 텍스트 또는 확인란으로 표시되고 텍스트 또는 확인란으로 편집됩니다. 이러한 프레젠테이션 및 편집 서비스를 제공하는 구성 요소를 대리자라고 합니다. 뷰에서 기본 대리자를 사용하기 때문에 대리자 작업을 시작할 뿐입니다. 그러나 다른 편집기 (예 : 슬라이더 또는 드롭 다운 목록)를 원한다고 가정하거나 데이터를 그래픽으로 표시한다고 상상해보십시오. 별이 등급을 표시하는 데 사용되는 별 대리자라는 예제를 살펴보겠습니다: Qt 5.0에는 모델/보기에 대한 19개의 예제가 함께 제공됩니다. 예제는 항목 보기 예제 페이지에서 찾을 수 있습니다. 어댑터의 또 다른 예는 QCompleter입니다. Qt는 QComboBox 및 아래와 같이 QLineEdit와 같은 Qt 위젯에서 자동 완성을 제공하기위한 QCompleter를 가지고 있습니다. QCompleter는 모델을 데이터 원본으로 사용합니다.