QSqlTableModel Class

Die Klasse QSqlTableModel bietet ein editierbares Datenmodell für eine einzelne Datenbanktabelle. Mehr...

Kopfzeile: #include <QSqlTableModel>
CMake: find_package(Qt6 REQUIRED COMPONENTS Sql)
target_link_libraries(mytarget PRIVATE Qt6::Sql)
qmake: QT += sql
Vererbt: QSqlQueryModel
Vererbt von:

QSqlRelationalTableModel

Öffentliche Typen

enum EditStrategy { OnFieldChange, OnRowChange, OnManualSubmit }

Öffentliche Funktionen

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

Reimplementierte öffentliche Funktionen

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

Öffentliche Slots

virtual void revert() override
void revertAll()
virtual bool select()
virtual bool selectRow(int row)
virtual bool submit() override
bool submitAll()

Signale

void beforeDelete(int row)
void beforeInsert(QSqlRecord &record)
void beforeUpdate(int row, QSqlRecord &record)
void primeInsert(int row, QSqlRecord &record)

Geschützte Funktionen

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)

Reimplementierte geschützte Funktionen

virtual QModelIndex indexInQuery(const QModelIndex &item) const override

Detaillierte Beschreibung

QSqlTableModel ist eine High-Level-Schnittstelle zum Lesen und Schreiben von Datenbankeinträgen aus einer einzelnen Tabelle. Sie baut auf der unteren Ebene QSqlQuery auf und kann verwendet werden, um Daten für Ansichtsklassen wie QTableView bereitzustellen. Ein Beispiel:

    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();

Wir legen den Namen der SQL-Tabelle und die Bearbeitungsstrategie fest, dann richten wir die Beschriftungen ein, die in der Kopfzeile des Views angezeigt werden. Die Bearbeitungsstrategie legt fest, wann die vom Benutzer im View vorgenommenen Änderungen tatsächlich auf die Datenbank angewendet werden. Die möglichen Werte sind OnFieldChange, OnRowChange und OnManualSubmit.

QSqlTableModel kann auch verwendet werden, um programmatisch auf eine Datenbank zuzugreifen, ohne sie an eine Ansicht zu binden:

    QSqlTableModel model;
    model.setTable("employee");
    model.select();
    int salary = model.record(4).value("salary").toInt();

Der obige Codeschnipsel extrahiert das Feld salary aus Datensatz 4 in der Ergebnismenge der Abfrage SELECT * from employee.

Es ist möglich, Filter mit setFilter() zu setzen oder die Sortierreihenfolge mit setSort() zu ändern. Am Ende müssen Sie select() aufrufen, um das Modell mit Daten aufzufüllen.

Das tablemodel-Beispiel veranschaulicht die Verwendung von QSqlTableModel als Datenquelle für ein QTableView.

QSqlTableModel bietet keine direkte Unterstützung für Fremdschlüssel. Verwenden Sie QSqlRelationalTableModel und QSqlRelationalDelegate wenn Sie Fremdschlüssel auflösen wollen.

Siehe auch QSqlRelationalTableModel, QSqlQuery, Model/View Programmierung, Tabellenmodell Beispiel, und Cached SQL Table.

Member-Typ-Dokumentation

enum QSqlTableModel::EditStrategy

Dieser Enum-Typ beschreibt, welche Strategie bei der Bearbeitung von Werten in der Datenbank zu wählen ist.

KonstanteWertBeschreibung
QSqlTableModel::OnFieldChange0Alle Änderungen am Modell werden sofort in die Datenbank übernommen.
QSqlTableModel::OnRowChange1Änderungen an einer Zeile werden übernommen, wenn der Benutzer eine andere Zeile auswählt.
QSqlTableModel::OnManualSubmit2Alle Änderungen werden im Modell zwischengespeichert, bis entweder submitAll() oder revertAll() aufgerufen wird.

Hinweis: Um zu verhindern, dass nur teilweise initialisierte Zeilen in die Datenbank eingefügt werden, verhält sich OnFieldChange für neu eingefügte Zeilen wie OnRowChange.

Siehe auch setEditStrategy().

Dokumentation der Mitgliedsfunktionen

[explicit] QSqlTableModel::QSqlTableModel(QObject *parent = nullptr, const QSqlDatabase &db = QSqlDatabase())

Erzeugt ein leeres QSqlTableModel und setzt das übergeordnete Element auf parent und die Datenbankverbindung auf db. Wenn db nicht gültig ist, wird die Standarddatenbankverbindung verwendet.

Die Standardbearbeitungsstrategie ist OnRowChange.

[virtual noexcept] QSqlTableModel::~QSqlTableModel()

Zerstört das Objekt und gibt alle zugewiesenen Ressourcen frei.

[signal] void QSqlTableModel::beforeDelete(int row)

Dieses Signal wird von deleteRowFromTable() ausgegeben, bevor die row aus der gerade aktiven Datenbanktabelle gelöscht wird.

[signal] void QSqlTableModel::beforeInsert(QSqlRecord &record)

Dieses Signal wird von insertRowIntoTable() ausgegeben, bevor eine neue Zeile in die derzeit aktive Datenbanktabelle eingefügt wird. Die Werte, die eingefügt werden sollen, werden in record gespeichert und können geändert werden, bevor sie eingefügt werden.

[signal] void QSqlTableModel::beforeUpdate(int row, QSqlRecord &record)

Dieses Signal wird von updateRowInTable() ausgegeben, bevor row in der gerade aktiven Datenbanktabelle mit den Werten von record aktualisiert wird.

Beachten Sie, dass nur Werte, die als generiert gekennzeichnet sind, aktualisiert werden. Das Generierungskennzeichen kann mit QSqlRecord::setGenerated() gesetzt und mit QSqlRecord::isGenerated() überprüft werden.

Siehe auch QSqlRecord::isGenerated().

[override virtual] void QSqlTableModel::clear()

Reimplements: QSqlQueryModel::clear().

[override virtual] bool QSqlTableModel::clearItemData(const QModelIndex &index)

Reimplements: QAbstractItemModel::clearItemData(const QModelIndex &index).

[override virtual] QVariant QSqlTableModel::data(const QModelIndex &index, int role = Qt::DisplayRole) const

Reimplements: QSqlQueryModel::data(const QModelIndex &item, int role) const.

Siehe auch setData().

QSqlDatabase QSqlTableModel::database() const

Gibt die Datenbankverbindung des Modells zurück.

[virtual protected] bool QSqlTableModel::deleteRowFromTable(int row)

Löscht die angegebene row aus der derzeit aktiven Datenbanktabelle.

Dies ist eine Low-Level-Methode, die direkt mit der Datenbank arbeitet und nicht direkt aufgerufen werden sollte. Verwenden Sie removeRow() oder removeRows(), um Werte zu löschen. Das Modell entscheidet abhängig von seiner Bearbeitungsstrategie, wann die Datenbank geändert werden soll.

Gibt true zurück, wenn die Zeile gelöscht wurde; andernfalls wird false zurückgegeben.

Siehe auch removeRow() und removeRows().

QSqlTableModel::EditStrategy QSqlTableModel::editStrategy() const

Gibt die aktuelle Bearbeitungsstrategie zurück.

Siehe auch setEditStrategy().

int QSqlTableModel::fieldIndex(const QString &fieldName) const

Gibt den Index des Feldes fieldName zurück, oder -1, wenn kein entsprechendes Feld im Modell existiert.

QString QSqlTableModel::filter() const

Gibt den aktuell eingestellten Filter zurück.

Siehe auch setFilter() und select().

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

Reimplements: QAbstractTableModel::flags(const QModelIndex &index) const.

[override virtual] QVariant QSqlTableModel::headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const

Reimplements: QSqlQueryModel::headerData(int section, Qt::Orientation orientation, int role) const.

[override virtual protected] QModelIndex QSqlTableModel::indexInQuery(const QModelIndex &item) const

Reimplements: QSqlQueryModel::indexInQuery(const QModelIndex &item) const.

Gibt den Index des Wertes in der Datenbankergebnismenge für die angegebene item im Modell zurück.

Der Rückgabewert ist identisch mit item, wenn keine Spalten oder Zeilen eingefügt, entfernt oder verschoben wurden.

Gibt einen ungültigen Modellindex zurück, wenn item außerhalb der Grenzen liegt oder wenn item nicht auf einen Wert in der Ergebnismenge zeigt.

Siehe auch QSqlQueryModel::indexInQuery().

bool QSqlTableModel::insertRecord(int row, const QSqlRecord &record)

Fügt den Datensatz record an der Position row ein. Wenn row negativ ist, wird der Datensatz an das Ende angehängt. Ruft intern insertRows() und setRecord() auf.

Gibt true zurück, wenn der Datensatz eingefügt werden konnte, andernfalls false.

Bei OnFieldChange und OnRowChange werden die Änderungen sofort übermittelt. Ein Fehlschlag hinterlässt keine neue Zeile im Modell.

Siehe auch insertRows(), removeRows(), und setRecord().

[virtual protected] bool QSqlTableModel::insertRowIntoTable(const QSqlRecord &values)

Fügt die Werte values in die derzeit aktive Datenbanktabelle ein.

Dies ist eine Low-Level-Methode, die direkt mit der Datenbank arbeitet und nicht direkt aufgerufen werden sollte. Verwenden Sie insertRow() und setData(), um Werte einzufügen. Das Modell entscheidet abhängig von seiner Bearbeitungsstrategie, wann es die Datenbank verändert.

Gibt true zurück, wenn die Werte eingefügt werden konnten, andernfalls false. Fehlerinformationen können mit lastError() abgefragt werden.

Siehe auch lastError(), insertRow(), und insertRows().

[override virtual] bool QSqlTableModel::insertRows(int row, int count, const QModelIndex &parent = QModelIndex())

Reimplements: QAbstractItemModel::insertRows(int row, int count, const QModelIndex &parent).

Fügt count leere Zeilen an der Position row ein. Beachten Sie, dass parent ungültig sein muss, da dieses Modell keine Eltern-Kind-Beziehungen unterstützt.

Bei den Bearbeitungsstrategien OnFieldChange und OnRowChange kann jeweils nur eine Zeile eingefügt werden, und das Modell darf keine anderen zwischengespeicherten Änderungen enthalten.

Das Signal primeInsert() wird für jede neue Zeile ausgegeben. Verbinden Sie es, wenn Sie die neue Zeile mit Standardwerten initialisieren wollen.

Übermittelt keine Zeilen, unabhängig von der Bearbeitungsstrategie.

Gibt false zurück, wenn die Parameter außerhalb der Grenzen liegen oder die Zeile nicht eingefügt werden kann; andernfalls wird true zurückgegeben.

Siehe auch primeInsert() und insertRecord().

bool QSqlTableModel::isDirty(const QModelIndex &index) const

Gibt true zurück, wenn der Wert unter dem Index index schmutzig ist, andernfalls false. Schmutzige Werte sind Werte, die im Modell geändert, aber noch nicht in die Datenbank geschrieben wurden.

Wenn index ungültig ist oder auf eine nicht existierende Zeile zeigt, wird false zurückgegeben.

bool QSqlTableModel::isDirty() const

Dies ist eine überladene Funktion.

Gibt true zurück, wenn das Modell geänderte Werte enthält, die noch nicht in die Datenbank übertragen wurden, andernfalls false.

[virtual protected] QString QSqlTableModel::orderByClause() const

Gibt eine SQL ORDER BY Klausel zurück, die auf der aktuell eingestellten Sortierreihenfolge basiert.

Siehe auch setSort() und selectStatement().

QSqlIndex QSqlTableModel::primaryKey() const

Gibt den Primärschlüssel für die aktuelle Tabelle zurück, oder einen leeren QSqlIndex, wenn die Tabelle nicht gesetzt ist oder keinen Primärschlüssel hat.

Siehe auch setTable(), setPrimaryKey(), und QSqlDatabase::primaryIndex().

[protected] QSqlRecord QSqlTableModel::primaryValues(int row) const

Gibt einen Datensatz zurück, der die im Primärschlüssel dargestellten Felder enthält, die auf die Werte unter row gesetzt sind. Wenn kein Primärschlüssel definiert ist, enthält der zurückgegebene Datensatz alle Felder.

Siehe auch primaryKey().

[signal] void QSqlTableModel::primeInsert(int row, QSqlRecord &record)

Dieses Signal wird von insertRows() ausgegeben, wenn eine Einfügung in die angegebene row der derzeit aktiven Datenbanktabelle eingeleitet wird. Der Parameter record kann beschrieben werden (da es sich um einen Verweis handelt), um z. B. einige Felder mit Standardwerten zu füllen und die generierten Flags der Felder zu setzen. Versuchen Sie nicht, den Datensatz mit anderen Mitteln wie setData() oder setRecord() zu bearbeiten, während Sie dieses Signal verarbeiten.

QSqlRecord QSqlTableModel::record() const

Dies ist eine überladene Funktion.

Sie gibt einen leeren Datensatz zurück, der nur die Feldnamen enthält. Diese Funktion kann verwendet werden, um die Feldnamen eines Datensatzes abzurufen.

Siehe auch setRecord() und QSqlRecord::isEmpty().

QSqlRecord QSqlTableModel::record(int row) const

Gibt den Datensatz unter row im Modell zurück.

Wenn row der Index einer gültigen Zeile ist, wird der Datensatz mit Werten aus dieser Zeile aufgefüllt.

Wenn das Modell nicht initialisiert ist, wird ein leerer Datensatz zurückgegeben.

Siehe auch QSqlRecord::isEmpty().

[override virtual] bool QSqlTableModel::removeColumns(int column, int count, const QModelIndex &parent = QModelIndex())

Reimplements: QSqlQueryModel::removeColumns(int column, int count, const QModelIndex &parent).

Entfernt count Spalten aus dem Modell parent, beginnend beim Index column.

Gibt zurück, wenn die Spalten erfolgreich entfernt wurden; andernfalls gibt false zurück.

Siehe auch removeRows().

[override virtual] bool QSqlTableModel::removeRows(int row, int count, const QModelIndex &parent = QModelIndex())

Reimplements: QAbstractItemModel::removeRows(int row, int count, const QModelIndex &parent).

Entfernt count Zeilen, beginnend bei row. Da dieses Modell keine hierarchischen Strukturen unterstützt, muss parent ein ungültiger Modellindex sein.

Wenn die Bearbeitungsstrategie OnManualSubmit lautet, wird das Löschen von Zeilen aus der Datenbank verzögert, bis submitAll() aufgerufen wird.

Bei OnFieldChange und OnRowChange kann jeweils nur eine Zeile gelöscht werden, und auch nur dann, wenn für keine andere Zeile eine Änderung im Cache vorliegt. Löschungen werden sofort an die Datenbank übermittelt. Das Modell behält eine leere Zeile für eine erfolgreich gelöschte Zeile, bis es mit select() aufgefrischt wird.

Nach einer fehlgeschlagenen Löschung wird der Vorgang im Modell nicht rückgängig gemacht. Die Anwendung kann den Vorgang erneut übermitteln oder rückgängig machen.

Eingefügte, aber noch nicht erfolgreich übermittelte Zeilen im zu löschenden Bereich werden sofort aus dem Modell entfernt.

Bevor eine Zeile aus der Datenbank gelöscht wird, wird das Signal beforeDelete() ausgegeben.

Wenn Zeile < 0 oder Zeile + Anzahl > rowCount(), wird keine Aktion durchgeführt und false zurückgegeben. Gibt true zurück, wenn alle Zeilen entfernt werden konnten; andernfalls wird false zurückgegeben. Detaillierte Datenbankfehlerinformationen können mit lastError() abgerufen werden.

Siehe auch removeColumns() und insertRows().

[override virtual slot] void QSqlTableModel::revert()

Reimplements: QAbstractItemModel::revert().

Dieser reimplementierte Slot wird von den Item-Delegierten aufgerufen, wenn der Benutzer die Bearbeitung der aktuellen Zeile abgebrochen hat.

Macht die Änderungen rückgängig, wenn die Strategie des Modells auf OnRowChange oder OnFieldChange eingestellt ist. Macht nichts für die OnManualSubmit Strategie.

Verwenden Sie revertAll(), um alle anstehenden Änderungen für die Strategie OnManualSubmit rückgängig zu machen oder revertRow(), um eine bestimmte Zeile rückgängig zu machen.

Siehe auch submit(), submitAll(), revertRow(), und revertAll().

[slot] void QSqlTableModel::revertAll()

Macht alle anstehenden Änderungen rückgängig.

Siehe auch revert(), revertRow(), und submitAll().

[virtual] void QSqlTableModel::revertRow(int row)

Macht alle Änderungen für den angegebenen row rückgängig.

Siehe auch revert(), revertAll(), submit(), und submitAll().

[override virtual] int QSqlTableModel::rowCount(const QModelIndex &parent = QModelIndex()) const

Reimplements: QSqlQueryModel::rowCount(const QModelIndex &parent) const.

[virtual slot] bool QSqlTableModel::select()

Füllt das Modell mit Daten aus der Tabelle, die über setTable() gesetzt wurde, unter Verwendung der angegebenen Filter- und Sortierbedingung und gibt bei Erfolg true zurück; andernfalls false.

Hinweis: Der Aufruf von select() macht alle nicht übermittelten Änderungen rückgängig und entfernt alle eingefügten Spalten.

Siehe auch setTable(), setFilter(), und selectStatement().

[virtual slot] bool QSqlTableModel::selectRow(int row)

Aktualisiert row im Modell mit Werten aus der Datenbanktabellenzeile, die mit Primärschlüsselwerten übereinstimmen. Ohne einen Primärschlüssel müssen alle Spaltenwerte übereinstimmen. Wenn keine übereinstimmende Zeile gefunden wird, zeigt das Modell eine leere Zeile an.

Gibt bei Erfolg true zurück, andernfalls false.

Siehe auch select().

[virtual protected] QString QSqlTableModel::selectStatement() const

Gibt die SQL-Anweisung SELECT zurück, die intern zum Auffüllen des Modells verwendet wird. Die Anweisung enthält den Filter und die ORDER BY Klausel.

Siehe auch filter() und orderByClause().

[override virtual] bool QSqlTableModel::setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole)

Reimplements: QAbstractItemModel::setData(const QModelIndex &index, const QVariant &value, int role).

Setzt die Daten für das Element index für die Rolle role auf value.

Bei der Bearbeitungsstrategie OnFieldChange kann ein Index nur dann eine Änderung erhalten, wenn kein anderer Index eine Änderung im Cache hat. Änderungen werden sofort übermittelt. Zeilen, die noch nicht in die Datenbank eingefügt worden sind, können jedoch frei geändert werden und werden nicht automatisch übermittelt. Übermittelte Änderungen werden im Fehlerfall nicht rückgängig gemacht.

Bei OnRowChange kann ein Index nur dann eine Änderung erhalten, wenn keine andere Zeile eine Änderung im Cache hat. Änderungen werden nicht automatisch übermittelt.

Gibt true zurück, wenn value gleich dem aktuellen Wert ist. Der Wert wird jedoch nicht an die Datenbank übermittelt.

Gibt true zurück, wenn der Wert gesetzt werden konnte, oder false im Fehlerfall, z. B. wenn index außerhalb des zulässigen Bereichs liegt.

Gibt false zurück, wenn die Rolle nicht Qt::EditRole ist. Um Daten für andere Rollen als EditRole zu setzen, verwenden Sie entweder ein benutzerdefiniertes Proxy-Modell oder die Unterklasse QSqlTableModel.

Siehe auch editStrategy(), data(), submit(), submitAll(), und revertRow().

[virtual] void QSqlTableModel::setEditStrategy(QSqlTableModel::EditStrategy strategy)

Setzt die Strategie für die Bearbeitung von Werten in der Datenbank auf strategy.

Dadurch werden alle anstehenden Änderungen rückgängig gemacht.

Siehe auch editStrategy() und revertAll().

[virtual] void QSqlTableModel::setFilter(const QString &filter)

Setzt den aktuellen Filter auf filter.

Der Filter ist eine SQL WHERE Klausel ohne das Schlüsselwort WHERE (zum Beispiel name='Josephine').

Wenn das Modell bereits mit Daten aus einer Datenbank befüllt ist, wählt das Modell diese mit dem neuen Filter erneut aus. Andernfalls wird der Filter beim nächsten Aufruf von select() angewendet.

Siehe auch filter(), select(), selectStatement(), und orderByClause().

[protected] void QSqlTableModel::setPrimaryKey(const QSqlIndex &key)

Geschützte Methode, die es Unterklassen ermöglicht, den Primärschlüssel auf key zu setzen.

Normalerweise wird der Primärindex automatisch gesetzt, wenn Sie setTable() aufrufen.

Siehe auch primaryKey() und QSqlDatabase::primaryIndex().

bool QSqlTableModel::setRecord(int row, const QSqlRecord &values)

Wendet values auf die row im Modell an. Die Quell- und Zielfelder werden nach Feldnamen und nicht nach Position im Datensatz zugeordnet.

Beachten Sie, dass die generierten Flags in values beibehalten werden, um zu bestimmen, ob die entsprechenden Felder verwendet werden, wenn Änderungen an die Datenbank übermittelt werden. Standardmäßig ist das Kennzeichen für alle Felder in QSqlRecord auf true gesetzt. Sie müssen das Kennzeichen mit setGenerated(false) für jeden Wert in values auf false setzen, um Änderungen zurück in die Datenbank zu speichern.

Bei den Bearbeitungsstrategien OnFieldChange und OnRowChange kann eine Zeile nur dann eine Änderung erhalten, wenn in keiner anderen Zeile eine Änderung zwischengespeichert wurde. Änderungen werden sofort übermittelt. Übermittelte Änderungen werden im Fehlerfall nicht rückgängig gemacht.

Gibt true zurück, wenn alle Werte gesetzt werden konnten; andernfalls wird false zurückgegeben.

Siehe auch record() und editStrategy().

[virtual] void QSqlTableModel::setSort(int column, Qt::SortOrder order)

Setzt die Sortierreihenfolge für column auf order. Dies wirkt sich nicht auf die aktuellen Daten aus; um die Daten unter Verwendung der neuen Sortierreihenfolge zu aktualisieren, rufen Sie select() auf.

Siehe auch sort(), select(), und orderByClause().

[virtual] void QSqlTableModel::setTable(const QString &tableName)

Setzt die Datenbanktabelle, mit der das Modell arbeitet, auf tableName. Wählt keine Daten aus der Tabelle aus, sondern holt deren Feldinformationen ab.

Um das Modell mit den Daten der Tabelle aufzufüllen, rufen Sie select() auf.

Fehlerinformationen können mit lastError() abgerufen werden.

Siehe auch select(), setFilter(), und lastError().

[override virtual] void QSqlTableModel::sort(int column, Qt::SortOrder order)

Reimplements: QAbstractItemModel::sort(int column, Qt::SortOrder order).

Sortiert die Daten nach column mit der Sortierreihenfolge order. Dadurch werden sofort Daten ausgewählt. Verwenden Sie setSort(), um eine Sortierreihenfolge festzulegen, ohne das Modell mit Daten zu füllen.

Siehe auch setSort(), select(), und orderByClause().

[override virtual slot] bool QSqlTableModel::submit()

Reimplements: QAbstractItemModel::submit().

Dieser reimplementierte Slot wird von den Item-Delegierten aufgerufen, wenn der Benutzer die Bearbeitung der aktuellen Zeile beendet hat.

Übergibt die aktuell bearbeitete Zeile, wenn die Strategie des Modells auf OnRowChange oder OnFieldChange eingestellt ist. Bei der Strategie OnManualSubmit geschieht nichts.

Verwenden Sie submitAll(), um alle anstehenden Änderungen für die Strategie OnManualSubmit zu übermitteln.

Gibt bei Erfolg true zurück; andernfalls false. Verwenden Sie lastError(), um detaillierte Fehlerinformationen abzufragen.

Das Modell wird nicht automatisch neu befüllt. Übermittelte Zeilen werden im Erfolgsfall aus der Datenbank aktualisiert.

Siehe auch revert(), revertRow(), submitAll(), revertAll(), und lastError().

[slot] bool QSqlTableModel::submitAll()

Übermittelt alle anstehenden Änderungen und gibt bei Erfolg true zurück. Gibt im Fehlerfall false zurück, detaillierte Fehlerinformationen können mit lastError() abgerufen werden.

In OnManualSubmit wird das Modell bei Erfolg neu aufgefüllt. Alle Ansichten, die das Modell darstellen, verlieren ihre Auswahlen.

Hinweis: Im Modus OnManualSubmit werden bereits übermittelte Änderungen nicht aus dem Cache gelöscht, wenn submitAll() fehlschlägt. Dadurch können Transaktionen zurückgesetzt und erneut übermittelt werden, ohne dass Daten verloren gehen.

Siehe auch revertAll() und lastError().

QString QSqlTableModel::tableName() const

Gibt den Namen der aktuell ausgewählten Tabelle zurück.

[virtual protected] bool QSqlTableModel::updateRowInTable(int row, const QSqlRecord &values)

Aktualisiert die angegebene row in der derzeit aktiven Datenbanktabelle mit der angegebenen values. Gibt bei Erfolg true zurück, andernfalls false.

Dies ist eine Low-Level-Methode, die direkt mit der Datenbank arbeitet und nicht direkt aufgerufen werden sollte. Verwenden Sie setData(), um Werte zu aktualisieren. Das Modell entscheidet abhängig von seiner Bearbeitungsstrategie, wann die Datenbank geändert werden soll.

Beachten Sie, dass nur Werte aktualisiert werden, bei denen das generated-flag gesetzt ist. Das generated-flag kann mit QSqlRecord::setGenerated() gesetzt und mit QSqlRecord::isGenerated() getestet werden.

Siehe auch QSqlRecord::isGenerated() und 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.