QSqlTableModel Class

QSqlTableModel 클래스는 단일 데이터베이스 테이블에 대한 편집 가능한 데이터 모델을 제공합니다. 더 보기...

Header: #include <QSqlTableModel>
CMake: find_package(Qt6 REQUIRED COMPONENTS Sql)
target_link_libraries(mytarget PRIVATE Qt6::Sql)
qmake: QT += sql
상속합니다: QSqlQueryModel
상속 대상:

QSqlRelationalTableModel

공용 타입

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은 외래 키에 대한 직접적인 지원을 제공하지 않습니다. 외래 키를 확인하려면 QSqlRelationalTableModelQSqlRelationalDelegate 을 사용하세요.

QSqlRelationalTableModel, QSqlQuery, 모델/뷰 프로그래밍, 테이블 모델 예제캐시된 SQL 테이블도참조하세요 .

멤버 유형 문서

enum QSqlTableModel::EditStrategy

이 열거형 유형은 데이터베이스에서 값을 편집할 때 선택할 전략을 설명합니다.

Constant설명
QSqlTableModel::OnFieldChange0모델에 대한 모든 변경 사항이 데이터베이스에 즉시 적용됩니다.
QSqlTableModel::OnRowChange1행에 대한 변경 사항은 사용자가 다른 행을 선택할 때 적용됩니다.
QSqlTableModel::OnManualSubmit2모든 변경 사항은 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 을 반환하고, 그렇지 않으면 거짓을 반환합니다.

변경 사항은 OnFieldChangeOnRowChange 에 대해 즉시 제출됩니다. 실패해도 모델에 새 행이 남지 않습니다.

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 은 유효하지 않아야 합니다.

편집 전략 OnFieldChangeOnRowChange 의 경우 한 번에 하나의 행만 삽입할 수 있으며 모델에 캐시된 다른 변경 사항이 포함되지 않을 수 있습니다.

새 행이 추가될 때마다 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()가 호출될 때까지 지연됩니다.

OnFieldChangeOnRowChange 의 경우 한 번에 하나의 행만 삭제할 수 있으며 다른 행에 캐시된 변경 내용이 없는 경우에만 삭제할 수 있습니다. 삭제된 내용은 즉시 데이터베이스에 제출됩니다. 모델은 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 로 플래그를 설정해야 합니다.

편집 전략 OnFieldChangeOnRowChange 의 경우 다른 행에 캐시된 변경 내용이 없는 경우에만 행이 변경 내용을 받을 수 있습니다. 변경 사항은 즉시 제출됩니다. 제출된 변경 내용은 실패 시 되돌리지 않습니다.

모든 값을 설정할 수 있으면 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.