qtableview 예제

우리는 진짜 나무를 제시하고 싶습니다. 우리는 모델을 만들기 위해 위의 예제에서 데이터를 래핑했습니다. 이번에는 QAbstractItemModel을 구현하는 계층 적 데이터에 대한 컨테이너인 QStandardItemModel을 사용합니다. 트리를 표시하려면 QStandardItemModel은 텍스트, 글꼴, 확인란 또는 브러시와 같은 항목의 모든 표준 속성을 보유할 수 있는 QStandardItem로 채워져야 합니다. 이제 분리된 모델을 사용하여 응용 프로그램의 성능에 미치는 영향을 확인해야 하므로 뷰에서 data() 메서드를 호출하는 빈도를 추적해 보겠습니다. 뷰가 모델을 호출하는 빈도를 추적하기 위해 오류 출력 스트림에 로그온하는 data() 메서드에 디버그 문을 넣었습니다. 이 작은 예제에서는 data()가 42번 호출됩니다. 필드 위로 커서를 마우스로 가을 때마다 data()가 다시 호출됩니다– 각 셀에 대해 7번. 따라서 data()가 호출되고 비용이 많이 드는 조회 작업이 캐시될 때 데이터를 사용할 수 있는지 확인하는 것이 중요합니다. 어댑터의 또 다른 예는 QCompleter입니다. Qt는 QComboBox 및 아래와 같이 QLineEdit와 같은 Qt 위젯에서 자동 완성을 제공하기위한 QCompleter를 가지고 있습니다.

QCompleter는 모델을 데이터 원본으로 사용합니다. 위의 예제를 트리 뷰가 있는 응용 프로그램으로 변환할 수 있습니다. QTableView를 QTreeView로 바꾸기만 하면 읽기/쓰기 트리가 생성됩니다. 모델을 변경할 필요가 없습니다. 모델 자체에 계층이 없기 때문에 트리에는 계층구조가 없습니다. 뷰 클래스는 맨 위에 헤더를 표시하여 열에 레이블을 지정합니다. 헤더 텍스트를 변경하려면 모델에서 setHeaderData()를 호출합니다. 헤더의 레이블은 기본적으로 테이블의 필드 이름으로 설정됩니다. 예를 들어: 다음은 모델/뷰 프로그래밍의 다른 측면을 보여주는 7개의 매우 간단하고 독립적인 응용 프로그램입니다. 소스 코드는 예제/위젯/자습서/modelview 디렉토리 내에서 찾을 수 있습니다.

이 작은 예제에서는 모델의 수동 특성을 보여 줍니다. 모델이 언제 사용될지 또는 어떤 데이터가 필요한지 알 수 없습니다. 뷰가 요청할 때마다 데이터를 제공하기만 하면 됩니다. 이 예제에서는 테이블 셀에 입력된 값을 반복하여 창 제목을 콘텐츠로 자동으로 채우는 응용 프로그램을 빌드합니다. 창 제목에 쉽게 액세스할 수 있도록 QMainWindow에 QTableView를 넣습니다. 이 예제에서는 QDialog와 함께 Qt Gui 응용 프로그램을 사용합니다: setLastName() 함수는 비슷합니다. 전체 소스 코드에 대한 쿼리 모델 예제를 참조하십시오. Qt 5.0에는 모델/뷰에 대한 19개의 예제가 함께 제공됩니다.

예제는 항목 보기 예제 페이지에서 찾을 수 있습니다. 이 자습서에는 프로젝트에 편집하고 통합할 수 있는 예제 코드가 포함되어 있습니다. 자습서의 소스 코드는 Qt의 예제/위젯/자습서/modelview 디렉토리에 있습니다. 행과 열의 수는 MyModel::rowCount() 및 MyModel::columnCount()에서 제공됩니다. 뷰가 셀의 텍스트가 무엇인지 알아야 하는 경우 MyModel::data() 메서드를 호출합니다. 행 및 열 정보는 매개 변수 인덱스로 지정되고 역할은 Qt::DisplayRole로 설정됩니다. 다른 역할은 다음 섹션에서 다룹니다. 이 예제에서는 표시해야 하는 데이터가 생성됩니다. 실제 응용 프로그램에서 MyModel에는 모든 읽기 및 쓰기 작업의 대상으로 사용되는 MyData라는 멤버가 있습니다. 다음 예제에서는 SQL 데이터 모델을 기반으로 뷰를 만듭니다.

간단한 예제로 시작하여 단계별로 확장하는 것이 좋습니다.

Comments are closed