QSqlTableModel Class
QSqlTableModel 클래스는 단일 데이터베이스 테이블에 대한 편집 가능한 데이터 모델을 제공합니다. 더 보기...
Header: | #include <QSqlTableModel> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Sql) target_link_libraries(mytarget PRIVATE Qt6::Sql) |
qmake: | QT += sql |
상속합니다: | QSqlQueryModel |
상속 대상: |
- 상속된 멤버를 포함한 모든 멤버 목록
- QSqlTableModel은 데이터베이스 클래스의 일부입니다.
공용 타입
enum | EditStrategy { OnFieldChange, OnRowChange, OnManualSubmit } |
공용 함수
QSqlTableModel(QObject *parent = nullptr, const QSqlDatabase &db = QSqlDatabase()) | |
virtual | ~QSqlTableModel() |
QSqlDatabase | database() const |
QSqlTableModel::EditStrategy | editStrategy() const |
int | fieldIndex(const QString &fieldName) const |
QString | filter() const |
bool | insertRecord(int row, const QSqlRecord &record) |
bool | isDirty(const QModelIndex &index) const |
bool | isDirty() const |
QSqlIndex | primaryKey() const |
QSqlRecord | record() const |
QSqlRecord | record(int row) const |
virtual void | revertRow(int row) |
virtual void | setEditStrategy(QSqlTableModel::EditStrategy strategy) |
virtual void | setFilter(const QString &filter) |
bool | setRecord(int row, const QSqlRecord &values) |
virtual void | setSort(int column, Qt::SortOrder order) |
virtual void | setTable(const QString &tableName) |
QString | tableName() const |
재구현된 공용 함수
virtual void | clear() override |
virtual bool | clearItemData(const QModelIndex &index) override |
virtual QVariant | data(const QModelIndex &index, int role = Qt::DisplayRole) const override |
virtual Qt::ItemFlags | flags(const QModelIndex &index) const override |
virtual QVariant | headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override |
virtual bool | insertRows(int row, int count, const QModelIndex &parent = QModelIndex()) override |
virtual bool | removeColumns(int column, int count, const QModelIndex &parent = QModelIndex()) override |
virtual bool | removeRows(int row, int count, const QModelIndex &parent = QModelIndex()) override |
virtual int | rowCount(const QModelIndex &parent = QModelIndex()) const override |
virtual bool | setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) override |
virtual void | sort(int column, Qt::SortOrder order) override |
공용 슬롯
virtual void | revert() override |
void | revertAll() |
virtual bool | select() |
virtual bool | selectRow(int row) |
virtual bool | submit() override |
bool | submitAll() |
시그널
void | beforeDelete(int row) |
void | beforeInsert(QSqlRecord &record) |
void | beforeUpdate(int row, QSqlRecord &record) |
void | primeInsert(int row, QSqlRecord &record) |
보호된 함수
virtual bool | deleteRowFromTable(int row) |
virtual bool | insertRowIntoTable(const QSqlRecord &values) |
virtual QString | orderByClause() const |
QSqlRecord | primaryValues(int row) const |
virtual QString | selectStatement() const |
void | setPrimaryKey(const QSqlIndex &key) |
virtual bool | updateRowInTable(int row, const QSqlRecord &values) |
재구현된 보호 함수
virtual QModelIndex | indexInQuery(const QModelIndex &item) const override |
상세 설명
QSqlTableModel은 단일 테이블에서 데이터베이스 레코드를 읽고 쓰기 위한 상위 수준 인터페이스입니다. 이는 하위 수준인 QSqlQuery 위에 구축되며 QTableView 과 같은 보기 클래스에 데이터를 제공하는 데 사용할 수 있습니다. 예를 들어
QSqlTableModel *model = new QSqlTableModel; model->setTable("employee"); model->setEditStrategy(QSqlTableModel::OnManualSubmit); model->select(); model->setHeaderData(0, Qt::Horizontal, tr("Name")); model->setHeaderData(1, Qt::Horizontal, tr("Salary")); QTableView *view = new QTableView; view->setModel(model); view->hideColumn(0); // don't show the ID view->show();
SQL 테이블의 이름과 편집 전략을 설정한 다음 뷰 헤더에 표시되는 레이블을 설정합니다. 편집 전략은 뷰에서 사용자가 수행한 변경 사항이 실제로 데이터베이스에 적용되는 시기를 지정합니다. 가능한 값은 OnFieldChange, OnRowChange, OnManualSubmit 입니다.
뷰에 바인딩하지 않고 프로그래밍 방식으로 데이터베이스에 액세스하는 데에도 QSqlTableModel을 사용할 수 있습니다:
QSqlTableModel model; model.setTable("employee"); model.select(); int salary = model.record(4).value("salary").toInt();
위의 코드 조각은 SELECT * from employee
쿼리의 결과 집합에 있는 레코드 4에서 salary
필드를 추출합니다.
setFilter()를 사용하여 필터를 설정하거나 setSort()를 사용하여 정렬 순서를 수정할 수 있습니다. 마지막에 select()를 호출하여 모델을 데이터로 채워야 합니다.
tablemodel 예제는 QSqlTableModel을 QTableView 의 데이터 소스로 사용하는 방법을 보여줍니다.
QSqlTableModel은 외래 키에 대한 직접적인 지원을 제공하지 않습니다. 외래 키를 확인하려면 QSqlRelationalTableModel 및 QSqlRelationalDelegate 을 사용하세요.
QSqlRelationalTableModel, QSqlQuery, 모델/뷰 프로그래밍, 테이블 모델 예제 및 캐시된 SQL 테이블도참조하세요 .
멤버 유형 문서
enum QSqlTableModel::EditStrategy
이 열거형 유형은 데이터베이스에서 값을 편집할 때 선택할 전략을 설명합니다.
Constant | 값 | 설명 |
---|---|---|
QSqlTableModel::OnFieldChange | 0 | 모델에 대한 모든 변경 사항이 데이터베이스에 즉시 적용됩니다. |
QSqlTableModel::OnRowChange | 1 | 행에 대한 변경 사항은 사용자가 다른 행을 선택할 때 적용됩니다. |
QSqlTableModel::OnManualSubmit | 2 | 모든 변경 사항은 submitAll() 또는 revertAll()가 호출될 때까지 모델에 캐시됩니다. |
참고: 부분적으로 초기화된 행만 데이터베이스에 삽입되는 것을 방지하기 위해 OnFieldChange
은 새로 삽입된 행에 대해 OnRowChange
처럼 작동합니다.
setEditStrategy()도 참조하세요 .
멤버 함수 문서
[explicit]
QSqlTableModel::QSqlTableModel(QObject *parent = nullptr, const QSqlDatabase &db = QSqlDatabase())
빈 QSqlTableModel을 만들고 부모를 parent 로 설정하고 데이터베이스 연결을 db 으로 설정합니다. db 가 유효하지 않은 경우 기본 데이터베이스 연결이 사용됩니다.
기본 편집 전략은 OnRowChange 입니다.
[virtual noexcept]
QSqlTableModel::~QSqlTableModel()
개체를 파괴하고 할당된 모든 리소스를 해제합니다.
[signal]
void QSqlTableModel::beforeDelete(int row)
이 신호는 deleteRowFromTable()에서 현재 활성 데이터베이스 테이블에서 row 이 삭제되기 전에 발신합니다.
[signal]
void QSqlTableModel::beforeInsert(QSqlRecord &record)
이 신호는 현재 활성 상태인 데이터베이스 테이블에 새 행이 삽입되기 전에 insertRowIntoTable()에서 발신합니다. 삽입하려는 값은 record 에 저장되며 삽입되기 전에 수정할 수 있습니다.
[signal]
void QSqlTableModel::beforeUpdate(int row, QSqlRecord &record)
이 신호는 row 이 현재 활성 상태인 데이터베이스 테이블에서 record 의 값으로 업데이트되기 전에 updateRowInTable()에서 발신됩니다.
생성됨으로 표시된 값만 업데이트된다는 점에 유의하세요. 생성 플래그는 QSqlRecord::setGenerated()로 설정하고 QSqlRecord::isGenerated()로 확인할 수 있습니다.
QSqlRecord::isGenerated()도 참조하세요 .
[override virtual]
void QSqlTableModel::clear()
다시 구현합니다: QSqlQueryModel::clear().
[override virtual]
bool QSqlTableModel::clearItemData(const QModelIndex &index)
재구현합니다: QAbstractItemModel::clearItemData(const QModelIndex &index).
[override virtual]
QVariant QSqlTableModel::data(const QModelIndex &index, int role = Qt::DisplayRole) const
재구현합니다: QSqlQueryModel::data(const QModelIndex &item, int role) const.
setData()도 참조하십시오 .
QSqlDatabase QSqlTableModel::database() const
모델의 데이터베이스 연결을 반환합니다.
[virtual protected]
bool QSqlTableModel::deleteRowFromTable(int row)
현재 활성화된 데이터베이스 테이블에서 주어진 row 을 삭제합니다.
이 메서드는 데이터베이스에서 직접 작동하는 저수준 메서드이므로 직접 호출해서는 안 됩니다. 값을 삭제하려면 removeRow() 또는 removeRows()를 사용합니다. 모델은 편집 전략에 따라 데이터베이스를 수정할 시기를 결정합니다.
행이 삭제된 경우 true
을 반환하고, 그렇지 않으면 false
을 반환합니다.
removeRow() 및 removeRows()도 참조하세요 .
QSqlTableModel::EditStrategy QSqlTableModel::editStrategy() const
현재 편집 전략을 반환합니다.
setEditStrategy()도 참조하세요 .
int QSqlTableModel::fieldIndex(const QString &fieldName) const
fieldName 필드의 인덱스를 반환하거나 모델에 해당 필드가 없는 경우 -1을 반환합니다.
QString QSqlTableModel::filter() const
현재 설정된 필터를 반환합니다.
setFilter() 및 select()도 참조하세요 .
[override virtual]
Qt::ItemFlags QSqlTableModel::flags(const QModelIndex &index) const
재구현합니다: QAbstractTableModel::flags(const QModelIndex &index) const.
[override virtual]
QVariant QSqlTableModel::headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const
재구현합니다: QSqlQueryModel::headerData(int section, Qt::오리엔테이션 방향, int 역할) const.
[override virtual protected]
QModelIndex QSqlTableModel::indexInQuery(const QModelIndex &item) const
재구현합니다: QSqlQueryModel::indexInQuery(const QModelIndex &item) const.
모델에서 주어진 item 에 대한 데이터베이스 결과 집합의 값 인덱스를 반환합니다.
반환 값은 열이나 행이 삽입, 제거 또는 이동되지 않은 경우 item 와 동일합니다.
item 이 범위를 벗어나거나 item 이 결과 집합의 값을 가리키지 않는 경우 잘못된 모델 인덱스를 반환합니다.
QSqlQueryModel::indexInQuery()도 참조하세요 .
bool QSqlTableModel::insertRecord(int row, const QSqlRecord &record)
row 위치에 record 을 삽입합니다. row 이 음수이면 레코드가 끝에 추가됩니다. 내부적으로 insertRows() 및 setRecord()을 호출합니다.
레코드를 삽입할 수 있으면 true
을 반환하고, 그렇지 않으면 거짓을 반환합니다.
변경 사항은 OnFieldChange 및 OnRowChange 에 대해 즉시 제출됩니다. 실패해도 모델에 새 행이 남지 않습니다.
insertRows(), removeRows() 및 setRecord()도 참조하세요 .
[virtual protected]
bool QSqlTableModel::insertRowIntoTable(const QSqlRecord &values)
현재 활성화된 데이터베이스 테이블에 values 값을 삽입합니다.
이 메서드는 데이터베이스에서 직접 작동하는 저수준 메서드이므로 직접 호출해서는 안 됩니다. insertRow () 및 setData()을 사용하여 값을 삽입합니다. 모델은 편집 전략에 따라 데이터베이스를 수정할 시기를 결정합니다.
값을 삽입할 수 있으면 true
을 반환하고, 그렇지 않으면 거짓을 반환합니다. 오류 정보는 lastError()로 검색할 수 있습니다.
lastError(), insertRow() 및 insertRows()도 참조하세요 .
[override virtual]
bool QSqlTableModel::insertRows(int row, int count, const QModelIndex &parent = QModelIndex())
재구현합니다: QAbstractItemModel::insertRows(int row, int count, const QModelIndex &parent).
row 위치에 count 빈 행을 삽입합니다. 이 모델은 부모-자식 관계를 지원하지 않으므로 parent 은 유효하지 않아야 합니다.
편집 전략 OnFieldChange 및 OnRowChange 의 경우 한 번에 하나의 행만 삽입할 수 있으며 모델에 캐시된 다른 변경 사항이 포함되지 않을 수 있습니다.
새 행이 추가될 때마다 primeInsert() 신호가 전송됩니다. 새 행을 기본값으로 초기화하려면 이 신호에 연결합니다.
편집 전략에 관계없이 행을 제출하지 않습니다.
매개변수가 범위를 벗어나거나 행을 삽입할 수 없는 경우 false
을 반환하고, 그렇지 않으면 true
을 반환합니다.
primeInsert() 및 insertRecord()도 참조하세요 .
bool QSqlTableModel::isDirty(const QModelIndex &index) const
인덱스 index 의 값이 더티이면 true
을 반환하고, 그렇지 않으면 거짓을 반환합니다. 더티 값은 모델에서 수정되었지만 아직 데이터베이스에 기록되지 않은 값입니다.
index 이 유효하지 않거나 존재하지 않는 행을 가리키면 false가 반환됩니다.
bool QSqlTableModel::isDirty() const
이 함수는 오버로드된 함수입니다.
모델에 데이터베이스에 커밋되지 않은 수정된 값이 포함되어 있으면 true
을 반환하고, 그렇지 않으면 false를 반환합니다.
[virtual protected]
QString QSqlTableModel::orderByClause() const
현재 설정된 정렬 순서에 따라 SQL ORDER BY
절을 반환합니다.
setSort() 및 selectStatement()도 참조하세요 .
QSqlIndex QSqlTableModel::primaryKey() const
현재 테이블의 기본 키를 반환하거나 테이블이 설정되지 않았거나 기본 키가 없는 경우 빈 QSqlIndex 을 반환합니다.
setTable(), setPrimaryKey() 및 QSqlDatabase::primaryIndex()도 참조하세요 .
[protected]
QSqlRecord QSqlTableModel::primaryValues(int row) const
row 의 값으로 설정된 기본 키에 표시된 필드가 포함된 레코드를 반환합니다. 기본 키가 정의되지 않은 경우 반환된 레코드에는 모든 필드가 포함됩니다.
primaryKey()도 참조하세요 .
[signal]
void QSqlTableModel::primeInsert(int row, QSqlRecord &record)
이 신호는 현재 활성 상태인 데이터베이스 테이블의 지정된 row 에서 삽입이 시작되면 insertRows()에서 발신합니다. record 매개변수는 참조이므로 일부 필드를 기본값으로 채우고 필드의 생성된 플래그를 설정하는 등의 용도로 쓸 수 있습니다(예: 참조이므로). 이 신호를 처리하는 동안 setData() 또는 setRecord()와 같은 다른 수단을 통해 레코드를 편집하려고 시도하지 마세요.
QSqlRecord QSqlTableModel::record() const
이 함수는 오버로드된 함수입니다.
필드 이름만 있는 빈 레코드를 반환합니다. 이 함수는 레코드의 필드 이름을 검색하는 데 사용할 수 있습니다.
setRecord() 및 QSqlRecord::isEmpty()도 참조하세요 .
QSqlRecord QSqlTableModel::record(int row) const
모델에서 row 에 있는 레코드를 반환합니다.
row 이 유효한 행의 인덱스인 경우 해당 행의 값으로 레코드가 채워집니다.
모델이 초기화되지 않은 경우 빈 레코드가 반환됩니다.
QSqlRecord::isEmpty()도 참조하세요 .
[override virtual]
bool QSqlTableModel::removeColumns(int column, int count, const QModelIndex &parent = QModelIndex())
재구현합니다: QSqlQueryModel::removeColumns(int column, int count, const QModelIndex &parent).
parent 모델에서 column 인덱스부터 시작하여 count 열을 제거합니다.
열이 성공적으로 제거되면 반환하고, 그렇지 않으면 false
을 반환합니다.
removeRows()도 참조하세요 .
[override virtual]
bool QSqlTableModel::removeRows(int row, int count, const QModelIndex &parent = QModelIndex())
재구현합니다: QAbstractItemModel::removeRows(int row, int count, const QModelIndex &parent).
row 에서 시작하는 count 행을 제거합니다. 이 모델은 계층 구조를 지원하지 않으므로 parent 은 잘못된 모델 인덱스여야 합니다.
편집 전략이 OnManualSubmit 인 경우 데이터베이스에서 행 삭제는 submitAll()가 호출될 때까지 지연됩니다.
OnFieldChange 및 OnRowChange 의 경우 한 번에 하나의 행만 삭제할 수 있으며 다른 행에 캐시된 변경 내용이 없는 경우에만 삭제할 수 있습니다. 삭제된 내용은 즉시 데이터베이스에 제출됩니다. 모델은 select()로 새로 고칠 때까지 성공적으로 삭제된 행에 대해 빈 행을 유지합니다.
삭제에 실패하면 모델에서 작업이 되돌리지 않습니다. 신청서를 다시 제출하거나 되돌릴 수 있습니다.
제거할 범위에 삽입되었지만 아직 성공적으로 제출되지 않은 행은 모델에서 즉시 제거됩니다.
행이 데이터베이스에서 삭제되기 전에 beforeDelete() 신호가 전송됩니다.
행이 0 미만 또는 행 + 카운트 > rowCount()인 경우 아무 조치도 취하지 않고 false를 반환합니다. 모든 행을 제거할 수 있으면 true
을 반환하고, 그렇지 않으면 false
을 반환합니다. 자세한 데이터베이스 오류 정보는 lastError()를 사용하여 검색할 수 있습니다.
removeColumns() 및 insertRows()도 참조하세요 .
[override virtual slot]
void QSqlTableModel::revert()
다시 구현합니다: QAbstractItemModel::revert().
이 재구현된 슬롯은 사용자가 현재 행 편집을 취소할 때 항목 델리게이트에 의해 호출됩니다.
모델의 전략이 OnRowChange 또는 OnFieldChange 으로 설정된 경우 변경 사항을 되돌립니다. OnManualSubmit 전략에는 아무 작업도 수행하지 않습니다.
OnManualSubmit 전략에 대해 보류 중인 모든 변경 사항을 되돌리려면 revertAll(), 특정 행을 되돌리려면 revertRow()를 사용합니다.
submit(), submitAll(), revertRow() 및 revertAll()도 참조하세요 .
[slot]
void QSqlTableModel::revertAll()
보류 중인 모든 변경 사항을 되돌립니다.
revert(), revertRow() 및 submitAll()도 참조하세요 .
[virtual]
void QSqlTableModel::revertRow(int row)
지정된 row 에 대한 모든 변경 사항을 되돌립니다.
revert(), revertAll(), submit() 및 submitAll()도 참조하세요 .
[override virtual]
int QSqlTableModel::rowCount(const QModelIndex &parent = QModelIndex()) const
재구현합니다: QSqlQueryModel::rowCount(const QModelIndex &parent) const.
[virtual slot]
bool QSqlTableModel::select()
지정된 필터 및 정렬 조건을 사용하여 setTable()를 통해 설정한 테이블의 데이터로 모델을 채우고 성공하면 true
을 반환하고, 그렇지 않으면 false
을 반환합니다.
참고: select()를 호출하면 제출되지 않은 변경 사항이 모두 되돌려지고 삽입된 열이 제거됩니다.
setTable(), setFilter() 및 selectStatement()도 참조하세요 .
[virtual slot]
bool QSqlTableModel::selectRow(int row)
기본 키 값에 일치하는 데이터베이스 테이블 행의 값으로 모델에서 row 을 새로 고칩니다. 기본 키가 없으면 모든 열 값이 일치해야 합니다. 일치하는 행을 찾지 못하면 모델에 빈 행이 표시됩니다.
성공하면 true
을 반환하고, 그렇지 않으면 false
을 반환합니다.
select()도 참조하세요 .
[virtual protected]
QString QSqlTableModel::selectStatement() const
모델을 채우는 데 내부적으로 사용되는 SQL SELECT
문을 반환합니다. 이 문에는 필터와 ORDER BY
절이 포함됩니다.
filter() 및 orderByClause()도 참조하세요 .
[override virtual]
bool QSqlTableModel::setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole)
재구현합니다: QAbstractItemModel::setData(const Q모델인덱스 &index, const Q변수 &value, int 역할).
role 역할에 대한 index 항목의 데이터를 value 로 설정합니다.
편집 전략 OnFieldChange 의 경우 다른 인덱스에 캐시된 변경 사항이 없는 경우에만 인덱스가 변경 사항을 수신할 수 있습니다. 변경 사항은 즉시 제출됩니다. 그러나 데이터베이스에 아직 삽입되지 않은 행은 자유롭게 변경할 수 있으며 자동으로 제출되지 않습니다. 제출된 변경 내용은 실패해도 되돌리지 않습니다.
OnRowChange 의 경우 인덱스는 다른 행에 캐시된 변경 내용이 없는 경우에만 변경 내용을 받을 수 있습니다. 변경 내용은 자동으로 제출되지 않습니다.
value 이 현재 값과 같으면 true
을 반환합니다. 그러나 이 값은 데이터베이스에 제출되지 않습니다.
index 이 범위를 벗어난 경우와 같이 값이 설정되었거나 오류가 있는 경우 true
을 반환합니다.
역할이 Qt::EditRole 이 아닌 경우 false
을 반환합니다. EditRole 이외의 역할에 대한 데이터를 설정하려면 사용자 정의 프록시 모델 또는 하위 클래스 QSqlTableModel 를 사용하세요.
editStrategy(), data(), submit(), submitAll() 및 revertRow()도 참조하세요 .
[virtual]
void QSqlTableModel::setEditStrategy(QSqlTableModel::EditStrategy strategy)
데이터베이스의 값 편집 전략을 strategy 으로 설정합니다.
이렇게 하면 보류 중인 변경 사항이 모두 되돌아갑니다.
editStrategy() 및 revertAll()도 참조하세요 .
[virtual]
void QSqlTableModel::setFilter(const QString &filter)
현재 필터를 filter 로 설정합니다.
필터는 WHERE
키워드가 없는 SQL WHERE
절입니다(예: name='Josephine')
.
모델이 이미 데이터베이스의 데이터로 채워져 있는 경우 모델은 새 필터를 사용하여 모델을 다시 선택합니다. 그렇지 않으면 다음에 select()를 호출할 때 필터가 적용됩니다.
filter(), select(), selectStatement() 및 orderByClause()도 참조하세요 .
[protected]
void QSqlTableModel::setPrimaryKey(const QSqlIndex &key)
서브클래스가 기본 키를 key 로 설정할 수 있도록 하는 보호된 메서드입니다.
일반적으로 기본 인덱스는 setTable()를 호출할 때마다 자동으로 설정됩니다.
primaryKey() 및 QSqlDatabase::primaryIndex()도 참조하세요 .
bool QSqlTableModel::setRecord(int row, const QSqlRecord &values)
values 을 모델의 row 에 적용합니다. 소스 및 대상 필드는 레코드 내 위치가 아닌 필드 이름으로 매핑됩니다.
values 에서 생성된 플래그는 변경 사항이 데이터베이스에 제출될 때 해당 필드가 사용되는지 여부를 결정하기 위해 보존됩니다. 기본적으로 QSqlRecord 의 모든 필드에 대해 true
로 설정되어 있습니다. 변경 사항을 데이터베이스에 다시 저장하려면 values 의 모든 값에 대해 setGenerated(거짓)을 사용하여 false
로 플래그를 설정해야 합니다.
편집 전략 OnFieldChange 및 OnRowChange 의 경우 다른 행에 캐시된 변경 내용이 없는 경우에만 행이 변경 내용을 받을 수 있습니다. 변경 사항은 즉시 제출됩니다. 제출된 변경 내용은 실패 시 되돌리지 않습니다.
모든 값을 설정할 수 있으면 true
을 반환하고, 그렇지 않으면 false를 반환합니다.
record() 및 editStrategy()도 참조하세요 .
[virtual]
void QSqlTableModel::setSort(int column, Qt::SortOrder order)
column 의 정렬 순서를 order 으로 설정합니다. 현재 데이터에는 영향을 주지 않으며, 새 정렬 순서를 사용하여 데이터를 새로 고치려면 select()를 호출합니다.
sort(), select() 및 orderByClause()도 참조하세요 .
[virtual]
void QSqlTableModel::setTable(const QString &tableName)
모델이 작동하는 데이터베이스 테이블을 tableName 으로 설정합니다. 테이블에서 데이터를 선택하지 않고 해당 필드 정보를 가져옵니다.
테이블의 데이터로 모델을 채우려면 select()를 호출합니다.
오류 정보는 lastError()로 검색할 수 있습니다.
select(), setFilter() 및 lastError()도 참조하세요 .
[override virtual]
void QSqlTableModel::sort(int column, Qt::SortOrder order)
재구현합니다: QAbstractItemModel::sort(int column, Qt::SortOrder 순서).
정렬 순서 order 으로 데이터를 column 으로 정렬합니다. 이렇게 하면 즉시 데이터를 선택하고 setSort()를 사용하여 모델을 데이터로 채우지 않고 정렬 순서를 설정할 수 있습니다.
setSort(), select() 및 orderByClause()도 참조하세요 .
[override virtual slot]
bool QSqlTableModel::submit()
다시 구현합니다: QAbstractItemModel::submit().
이 재구현된 슬롯은 사용자가 현재 행 편집을 중지했을 때 항목 델리게이트에 의해 호출됩니다.
모델의 전략이 OnRowChange 또는 OnFieldChange 으로 설정된 경우 현재 편집한 행을 제출합니다. OnManualSubmit 전략에는 아무 작업도 수행하지 않습니다.
OnManualSubmit 전략에 대해 보류 중인 모든 변경 사항을 제출하려면 submitAll()를 사용합니다.
성공하면 true
을 반환하고, 그렇지 않으면 false
을 반환합니다. 자세한 오류 정보를 쿼리하려면 lastError()를 사용합니다.
모델을 자동으로 다시 채우지 않습니다. 제출된 행은 성공 시 데이터베이스에서 새로 고쳐집니다.
revert(), revertRow(), submitAll(), revertAll() 및 lastError()도 참조하세요 .
[slot]
bool QSqlTableModel::submitAll()
보류 중인 모든 변경 사항을 제출하고 성공 시 true
을 반환합니다. 오류 시 false
를 반환하며, 자세한 오류 정보는 lastError()로 확인할 수 있습니다.
OnManualSubmit 에서 성공하면 모델이 다시 채워집니다. 이를 표시하는 모든 보기의 선택 항목이 손실됩니다.
참고: OnManualSubmit 모드에서는 submitAll()이 실패해도 이미 제출된 변경 내용이 캐시에서 지워지지 않습니다. 따라서 데이터 손실 없이 트랜잭션을 롤백하고 다시 제출할 수 있습니다.
revertAll() 및 lastError()도 참조하세요 .
QString QSqlTableModel::tableName() const
현재 선택된 테이블의 이름을 반환합니다.
[virtual protected]
bool QSqlTableModel::updateRowInTable(int row, const QSqlRecord &values)
현재 활성화된 데이터베이스 테이블의 지정된 row 을 지정된 values 으로 업데이트합니다. 성공하면 true
을 반환하고, 그렇지 않으면 false
을 반환합니다.
이 함수는 데이터베이스에서 직접 작동하는 저수준 메서드이므로 직접 호출해서는 안 됩니다. 값을 업데이트하려면 setData()를 사용합니다. 모델은 편집 전략에 따라 데이터베이스를 수정할 시기를 결정합니다.
생성된 플래그가 설정된 값만 업데이트된다는 점에 유의하세요. 생성된 플래그는 QSqlRecord::setGenerated()로 설정하고 QSqlRecord::isGenerated()로 테스트할 수 있습니다.
QSqlRecord::isGenerated() 및 setData()도 참조하세요 .
© 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.