QAbstractTableModel Class

QAbstractTableModel 클래스는 테이블 모델을 생성하기 위해 서브클래싱할 수 있는 추상 모델을 제공합니다. 더 보기...

Header: #include <QAbstractTableModel>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
상속합니다: QAbstractItemModel
상속 대상:

QSqlQueryModel

공용 함수

QAbstractTableModel(QObject *parent = nullptr)
virtual ~QAbstractTableModel()

재구현된 공용 함수

virtual bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) override
virtual Qt::ItemFlags flags(const QModelIndex &index) const override
virtual QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const override
virtual QModelIndex sibling(int row, int column, const QModelIndex &idx) const override

상세 설명

QAbstractTableModel은 데이터를 2차원 항목 배열로 표현하는 모델에 대한 표준 인터페이스를 제공합니다. 직접 사용되지는 않지만 반드시 서브클래싱되어야 합니다.

이 모델은 QAbstractItemModel 보다 더 전문화된 인터페이스를 제공하므로 트리 뷰에 사용하기에는 적합하지 않지만 QListView 에 데이터를 제공하는 데 사용할 수 있습니다. 단순한 항목 목록을 나타내야 하고 단일 열의 데이터만 포함하는 모델이 필요한 경우 QAbstractListModel 를 서브클래싱하는 것이 더 적합할 수 있습니다.

rowCount() 및 columnCount() 함수는 테이블의 차원을 반환합니다. 모델의 항목에 해당하는 모델 인덱스를 검색하려면 index()를 사용하고 행과 열 번호만 제공하세요.

서브클래싱

QAbstractTableModel을 서브클래싱할 때는 rowCount(), columnCount() 및 data()를 구현해야 합니다. index () 및 parent() 함수의 기본 구현은 QAbstractTableModel에서 제공합니다. 잘 동작하는 모델은 headerData()도 구현합니다.

편집 가능한 모델은 setData() 를 구현하고 flags() 를 구현하여 Qt::ItemIsEditable 를 포함하는 값을 반환해야 합니다.

크기 조정 가능한 데이터 구조에 대한 인터페이스를 제공하는 모델은 insertRows(), removeRows(), insertColumns() 및 removeColumns()의 구현을 제공할 수 있습니다. 이러한 함수를 구현할 때는 연결된 모든 뷰가 변경 사항을 인식할 수 있도록 적절한 함수를 호출하는 것이 중요합니다:

참고: 모델 서브클래싱에 대한 몇 가지 일반적인 지침은 모델 서브클래싱 참조에서 확인할 수 있습니다.

스레드 안전

QObject의 서브클래스인 QAbstractTableModel은 thread-safe 이 아닙니다. 모든 QAbstractTableModel 모델 관련 API는 모델 객체가 있는 스레드에서만 호출해야 합니다. QAbstractTableModel이 뷰와 연결되어 있는 경우, 이는 뷰가 있는 곳인 GUI 스레드를 의미하며, GUI 스레드에서 모델을 호출하게 됩니다. 백그라운드 스레드를 사용하여 모델의 콘텐츠를 채우거나 수정하는 것은 가능하지만 백그라운드 스레드에서는 모델 관련 API를 직접 호출할 수 없으므로 주의가 필요합니다. 대신 업데이트를 대기열에 넣고 메인 스레드에서 적용해야 합니다. 이 작업은 큐 연결을 사용하여 수행할 수 있습니다.

모델 클래스, QAbstractItemModel, 및 QAbstractListModel참조하세요 .

멤버 함수 문서

[explicit] QAbstractTableModel::QAbstractTableModel(QObject *parent = nullptr)

주어진 parent 에 대한 추상 테이블 모델을 구축합니다.

[virtual noexcept] QAbstractTableModel::~QAbstractTableModel()

추상 테이블 모델을 삭제합니다.

[override virtual] bool QAbstractTableModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent)

재구현합니다: QAbstractItemModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent).

[override virtual] Qt::ItemFlags QAbstractTableModel::flags(const QModelIndex &index) const

재구현합니다: QAbstractItemModel::flags(const QModelIndex &index) const.

[override virtual] QModelIndex QAbstractTableModel::index(int row, int column, const QModelIndex &parent = QModelIndex()) const

재구현합니다: QAbstractItemModel::index(int row, int column, const QModelIndex &parent) const.

rowcolumn 에 있는 데이터의 색인을 parent 로 반환합니다.

parent()도 참조하세요 .

[override virtual] QModelIndex QAbstractTableModel::sibling(int row, int column, const QModelIndex &idx) const

재구현합니다: QAbstractItemModel::sibling(int row, int column, const QModelIndex &index) const.

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.