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: |
- Liste aller Mitglieder, einschließlich geerbter Mitglieder
- QSqlTableModel ist Teil von Database Classes.
Ö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.
Konstante | Wert | Beschreibung |
---|---|---|
QSqlTableModel::OnFieldChange | 0 | Alle Änderungen am Modell werden sofort in die Datenbank übernommen. |
QSqlTableModel::OnRowChange | 1 | Änderungen an einer Zeile werden übernommen, wenn der Benutzer eine andere Zeile auswählt. |
QSqlTableModel::OnManualSubmit | 2 | Alle Ä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.