pyqt tableview 예제

PyQt5 테이블 예제전체 PyQt5 테이블 코드는 아래와 같습니다: 이 예제에서는 테이블 셀에 입력된 값을 반복하여 창 제목을 콘텐츠로 자동으로 채우는 응용 프로그램을 빌드하려고 합니다. 창 제목에 쉽게 액세스할 수 있도록 QMainWindow에 QTableView를 넣습니다. 이 예제(PyQt5)에서는 테이블이 있는 창을 표시하지만 디자이너와 함께 창 gui의 일부로 만들 수 있습니다. 아래 예제는 3개의 열과 여러 행이 있는 테이블을 만듭니다. 지금까지의 모든 예제에서 데이터는 셀의 텍스트 또는 확인란으로 표시되고 텍스트 또는 확인란으로 편집됩니다. 이러한 프레젠테이션 및 편집 서비스를 제공하는 구성 요소를 대리자라고 합니다. 뷰에서 기본 대리자를 사용하기 때문에 대리자 작업을 시작할 뿐입니다. 그러나 다른 편집기 (예 : 슬라이더 또는 드롭 다운 목록)를 원한다고 가정하거나 데이터를 그래픽으로 표시한다고 상상해보십시오. 별이 등급을 표시하는 데 사용되는 Star Delegate라는 예제를 살펴보겠습니다. 이제 분리된 모델을 사용하여 응용 프로그램의 성능에 미치는 영향을 확인해야 하므로 뷰가 data() 메서드를 호출하는 빈도를 추적해 보겠습니다. 뷰가 모델을 호출하는 빈도를 추적하기 위해 오류 출력 스트림에 로그온하는 data() 메서드에 디버그 문을 넣었습니다. 이 작은 예제에서는 data()가 42번 호출됩니다.

필드 위로 커서를 마우스로 가을 때마다 data()가 다시 호출됩니다– 각 셀에 대해 7번. 따라서 data()가 호출되고 비용이 많이 드는 조회 작업이 캐시될 때 데이터를 사용할 수 있는지 확인하는 것이 중요합니다. 행과 열의 수는 MyModel::rowCount() 및 MyModel::columnCount()에서 제공됩니다. 뷰가 셀의 텍스트가 무엇인지 알아야 하는 경우 MyModel::data() 메서드를 호출합니다. 행 및 열 정보는 매개 변수 인덱스로 지정되고 역할은 Qt::DisplayRole로 설정됩니다. 다른 역할은 다음 섹션에서 다룹니다. 이 예제에서는 표시해야 하는 데이터가 생성됩니다. 실제 응용 프로그램에서 MyModel에는 모든 읽기 및 쓰기 작업의 대상으로 사용되는 MyData라는 멤버가 있습니다. 이 작은 예제에서는 모델의 수동 특성을 보여 줍니다. 모델이 언제 사용될지 또는 어떤 데이터가 필요한지 알 수 없습니다.

뷰가 요청할 때마다 데이터를 제공하기만 하면 됩니다. 이 자습서에는 프로젝트에 편집하고 통합할 수 있는 예제 코드가 포함되어 있습니다. 자습서의 소스 코드는 Qt의 예제/위젯/자습서/modelview 디렉토리에 있습니다. 위의 예제를 트리 뷰가 있는 응용 프로그램으로 변환할 수 있습니다. QTableView를 QTreeView로 바꾸기만 하면 읽기/쓰기 트리가 생성됩니다.