Sur cette page

QSqlTableModel Class

La classe QSqlTableModel fournit un modèle de données modifiable pour une seule table de base de données. En savoir plus...

En-tête : #include <QSqlTableModel>
CMake : find_package(Qt6 REQUIRED COMPONENTS Sql)
target_link_libraries(mytarget PRIVATE Qt6::Sql)
qmake : QT += sql
Hérite de : QSqlQueryModel
Hérité par :

QSqlRelationalTableModel

Types publics

enum EditStrategy { OnFieldChange, OnRowChange, OnManualSubmit }

Fonctions publiques

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

Fonctions publiques réimplémentées

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

Slots publics

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

Signaux

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

Fonctions protégées

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)

Fonctions protégées réimplémentées

virtual QModelIndex indexInQuery(const QModelIndex &item) const override

Description détaillée

QSqlTableModel est une interface de haut niveau permettant de lire et d'écrire des enregistrements de base de données à partir d'une seule table. Elle s'appuie sur l'interface de niveau inférieur QSqlQuery et peut être utilisée pour fournir des données à des classes de vue telles que QTableView. Par exemple :

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

Nous définissons le nom de la table SQL et la stratégie d’édition, puis nous configurons les libellés affichés dans l’en-tête de la vue. La stratégie d’édition détermine à quel moment les modifications effectuées par l’utilisateur dans la vue sont effectivement appliquées à la base de données. Les valeurs possibles sont OnFieldChange, OnRowChange et OnManualSubmit.

QSqlTableModel peut également être utilisé pour accéder à une base de données par programmation, sans la lier à une vue :

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

L'extrait de code ci-dessus extrait le champ « salary » de l'enregistrement n° 4 dans le jeu de résultats de la requête « SELECT * from employee ».

Il est possible de définir des filtres à l’aide de ` setFilter()` ou de modifier l’ordre de tri à l’aide de ` setSort()`. À la fin, vous devez appeler ` select()` pour remplir le modèle avec les données.

L'exemple tablemodel illustre comment utiliser QSqlTableModel comme source de données pour un QTableView.

QSqlTableModel ne prend pas directement en charge les clés étrangères. Utilisez les méthodes ` QSqlRelationalTableModel ` et ` QSqlRelationalDelegate ` si vous souhaitez résoudre les clés étrangères.

Voir également QSqlRelationalTableModel, QSqlQuery, Programmation modèle/vue, Exemple de modèle de table et Table SQL mise en cache.

Documentation sur les types de membres

enum QSqlTableModel::EditStrategy

Ce type d'énumération définit la stratégie à adopter lors de la modification des valeurs dans la base de données.

ConstanteValeurDescription
QSqlTableModel::OnFieldChange0Toutes les modifications apportées au modèle seront immédiatement appliquées à la base de données.
QSqlTableModel::OnRowChange1Les modifications apportées à une ligne seront appliquées lorsque l'utilisateur sélectionnera une autre ligne.
QSqlTableModel::OnManualSubmit2Toutes les modifications seront mises en cache dans le modèle jusqu’à ce que la méthode ` submitAll()` ou ` revertAll()` soit appelée.

Remarque : afin d’empêcher l’insertion de lignes partiellement initialisées dans la base de données, la méthode OnFieldChange se comporte comme la méthode OnRowChange pour les lignes nouvellement insérées.

Voir également setEditStrategy().

Documentation des fonctions membres

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

Crée un QSqlTableModel vide, définit son parent sur parent et sa connexion à la base de données sur db. Si db n'est pas valide, la connexion par défaut à la base de données sera utilisée.

La stratégie d'édition par défaut est OnRowChange.

[virtual noexcept] QSqlTableModel::~QSqlTableModel()

Détruit l'objet et libère toutes les ressources allouées.

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

Ce signal est émis par la fonction ` deleteRowFromTable()` avant que l'row ne soit supprimée de la table de base de données actuellement active.

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

Ce signal est émis par la fonction ` insertRowIntoTable()` avant l'insertion d'une nouvelle ligne dans la table de base de données actuellement active. Les valeurs sur le point d'être insérées sont stockées dans ` record ` et peuvent être modifiées avant leur insertion.

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

Ce signal est émis par updateRowInTable() avant que la colonne row ne soit mise à jour dans la table de base de données actuellement active avec les valeurs provenant de record.

Notez que seules les valeurs marquées comme générées seront mises à jour. L'indicateur « généré » peut être activé avec QSqlRecord::setGenerated() et vérifié avec QSqlRecord::isGenerated().

Voir également QSqlRecord::isGenerated().

[override virtual] void QSqlTableModel::clear()

Réimplémente : QSqlQueryModel::clear().

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

Réimplémente : QAbstractItemModel::clearItemData(const QModelIndex &index).

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

Réimplémente : QSqlQueryModel::data(const QModelIndex &item, int role) const.

Voir également setData().

QSqlDatabase QSqlTableModel::database() const

Renvoie la connexion à la base de données du modèle.

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

Supprime l'row on indiquée de la table de base de données actuellement active.

Il s'agit d'une méthode de bas niveau qui opère directement sur la base de données et qui ne doit pas être appelée directement. Utilisez ` removeRow()` ou ` removeRows()` pour supprimer des valeurs. Le modèle décidera, en fonction de sa stratégie d'édition, du moment où il convient de modifier la base de données.

Renvoie ` true ` si la ligne a été supprimée ; sinon, renvoie ` false`.

Voir également removeRow() et removeRows().

QSqlTableModel::EditStrategy QSqlTableModel::editStrategy() const

Renvoie la stratégie d'édition actuelle.

Voir aussi setEditStrategy().

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

Renvoie l'index du champ « fieldName », ou -1 si aucun champ correspondant n'existe dans le modèle.

QString QSqlTableModel::filter() const

Renvoie le filtre actuellement défini.

Voir également setFilter() et select().

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

Réimplémente : QAbstractTableModel::flags(const QModelIndex &index) const.

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

Réimplémente : QSqlQueryModel::headerData(int section, Qt::Orientation orientation, int role) const.

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

Réimplémente : ` QSqlQueryModel::indexInQuery(const QModelIndex &item) const`.

Renvoie l’index de la valeur dans le jeu de résultats de la base de données correspondant à l’ item donné dans le modèle.

La valeur renvoyée est identique à ` item ` si aucune colonne ni ligne n’a été insérée, supprimée ou déplacée.

Renvoie un index de modèle invalide si item est hors limites ou si item ne pointe pas vers une valeur du jeu de résultats.

Voir aussi QSqlQueryModel::indexInQuery().

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

Insère l'record à la position row. Si row est négatif, l'enregistrement sera ajouté à la fin. Appelle en interne les fonctions insertRows() et setRecord().

Renvoie true si l'enregistrement a pu être inséré, sinon false.

Les modifications sont soumises immédiatement pour OnFieldChange et OnRowChange. En cas d’échec, aucune nouvelle ligne n’est ajoutée au modèle.

Voir également insertRows(), removeRows() et setRecord().

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

Insère les valeurs values dans la table de base de données actuellement active.

Il s’agit d’une méthode de bas niveau qui opère directement sur la base de données et qui ne doit pas être appelée directement. Utilisez insertRow() et setData() pour insérer des valeurs. Le modèle décidera, en fonction de sa stratégie d’édition, du moment où il convient de modifier la base de données.

Renvoie ` true ` si les valeurs ont pu être insérées, sinon `false`. Les informations d’erreur peuvent être récupérées à l’aide de ` lastError()`.

Voir également lastError(), insertRow() et insertRows().

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

Réimplémente : QAbstractItemModel::insertRows(int row, int count, const QModelIndex &parent).

Insère count lignes vides à la position row. Notez que parent doit être invalide, car ce modèle ne prend pas en charge les relations parent-enfant.

Pour les stratégies d’édition OnFieldChange et OnRowChange, une seule ligne peut être insérée à la fois et le modèle ne doit pas contenir d’autres modifications mises en cache.

Le signal primeInsert() sera émis pour chaque nouvelle ligne. Connectez-vous à ce signal si vous souhaitez initialiser la nouvelle ligne avec des valeurs par défaut.

Ne soumet pas les lignes, quelle que soit la stratégie d’édition.

Renvoie false si les paramètres sont hors limites ou si la ligne ne peut pas être insérée ; sinon, renvoie true.

Voir également primeInsert() et insertRecord().

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

Renvoie ` true ` si la valeur à l’index ` index ` est « sale », sinon `false`. Les valeurs « sales » sont celles qui ont été modifiées dans le modèle mais qui n’ont pas encore été enregistrées dans la base de données.

Si index n'est pas valide ou pointe vers une ligne inexistante, la fonction renvoie false.

bool QSqlTableModel::isDirty() const

Renvoie « true » si le modèle contient des valeurs modifiées qui n'ont pas encore été enregistrées dans la base de données, sinon « false ».

Il s’agit d’une fonction surchargée.

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

Renvoie une clause SQL « ORDER BY » en fonction de l'ordre de tri actuellement défini.

Voir également ` setSort()` et ` selectStatement()`.

QSqlIndex QSqlTableModel::primaryKey() const

Renvoie la clé primaire de la table actuelle, ou un objet ` QSqlIndex ` vide si la table n'est pas définie ou ne possède pas de clé primaire.

Voir également setTable(), setPrimaryKey() et QSqlDatabase::primaryIndex().

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

Renvoie un enregistrement contenant les champs figurant dans la clé primaire, dont les valeurs sont celles indiquées à l'adresse row. Si aucune clé primaire n'est définie, l'enregistrement renvoyé contiendra tous les champs.

Voir également primaryKey().

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

Ce signal est émis par la fonction ` insertRows()` lorsqu'une insertion est lancée dans l'row donné de la table de la base de données actuellement active. Le paramètre ` record ` peut être modifié (puisqu'il s'agit d'une référence), par exemple pour remplir certains champs avec des valeurs par défaut et définir les indicateurs générés pour ces champs. N’essayez pas de modifier l’enregistrement par d’autres moyens, tels que setData() ou setRecord(), pendant le traitement de ce signal.

QSqlRecord QSqlTableModel::record() const

Il s'agit d'une fonction surchargée.

Elle renvoie un enregistrement vide, ne contenant que les noms de champs. Cette fonction permet de récupérer les noms de champs d'un enregistrement.

Voir également setRecord() et QSqlRecord::isEmpty().

QSqlRecord QSqlTableModel::record(int row) const

Renvoie l'enregistrement situé à l'adresse row dans le modèle.

Si ` row ` correspond à l'index d'une ligne valide, l'enregistrement sera renseigné avec les valeurs de cette ligne.

Si le modèle n’est pas initialisé, un enregistrement vide sera renvoyé.

Voir aussi QSqlRecord::isEmpty().

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

Réimplémente : QSqlQueryModel::removeColumns(int column, int count, const QModelIndex &parent).

Supprime les colonnes count du modèle parent, en commençant à l'index column.

Renvoie si les colonnes ont été supprimées avec succès ; sinon, renvoie ` false`.

Voir aussi removeRows().

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

Réimplémente : QAbstractItemModel::removeRows(int row, int count, const QModelIndex &parent).

Supprime les lignes de count à partir de row. Étant donné que ce modèle ne prend pas en charge les structures hiérarchiques, parent doit être un index de modèle non valide.

Lorsque la stratégie d’édition est « OnManualSubmit », la suppression des lignes de la base de données est différée jusqu’à l’appel de la fonction « submitAll() ».

Pour OnFieldChange et OnRowChange, une seule ligne peut être supprimée à la fois, et uniquement si aucune autre ligne ne présente de modification mise en cache. Les suppressions sont immédiatement transmises à la base de données. Le modèle conserve une ligne vide pour la ligne supprimée avec succès jusqu’à ce qu’il soit actualisé avec select().

En cas d’échec de la suppression, l’opération n’est pas annulée dans le modèle. L’application peut réessayer ou annuler l’opération.

Les lignes insérées mais pas encore validées avec succès dans la plage à supprimer sont immédiatement supprimées du modèle.

Avant qu’une ligne ne soit supprimée de la base de données, le signal ` beforeDelete()` est émis.

Si row < 0 ou si row + count > rowCount(), aucune action n’est effectuée et la valeur false est renvoyée. Renvoie true si toutes les lignes ont pu être supprimées ; sinon, renvoie false. Des informations détaillées sur les erreurs de base de données peuvent être récupérées à l’aide de lastError().

Voir également removeColumns() et insertRows().

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

Réimplémente : QAbstractItemModel::revert().

Cet emplacement réimplémenté est appelé par les délégués d’élément lorsque l’utilisateur annule la modification de la ligne actuelle.

Il annule les modifications si la stratégie du modèle est définie sur « OnRowChange » ou « OnFieldChange ». Il ne fait rien pour la stratégie « OnManualSubmit ».

Utilisez revertAll() pour annuler toutes les modifications en attente pour la stratégie OnManualSubmit ou revertRow() pour annuler une ligne spécifique.

Voir également submit(), submitAll(), revertRow() et revertAll().

[slot] void QSqlTableModel::revertAll()

Annule toutes les modifications en attente.

Voir également revert(), revertRow() et submitAll().

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

Annule toutes les modifications apportées à l'row spécifiée.

Voir également revert(), revertAll(), submit() et submitAll().

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

Réimplémente : QSqlQueryModel::rowCount(const QModelIndex &parent) const.

[virtual slot] bool QSqlTableModel::select()

Remplit le modèle avec les données de la table définie via ` setTable()`, en utilisant le filtre et les critères de tri spécifiés, et renvoie ` true ` en cas de réussite ; sinon, renvoie ` false`.

Remarque : l'appel de la fonction `select()` annulera toutes les modifications non validées et supprimera toutes les colonnes insérées.

Voir également setTable(), setFilter() et selectStatement().

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

Actualise la colonne « row » du modèle avec les valeurs de la ligne de la table de base de données correspondant aux valeurs de la clé primaire. En l'absence de clé primaire, toutes les valeurs des colonnes doivent correspondre. Si aucune ligne correspondante n'est trouvée, le modèle affichera une ligne vide.

Renvoie ` true ` en cas de succès ; sinon, renvoie ` false`.

Voir aussi ` select()`.

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

Renvoie l'instruction SQL « SELECT » utilisée en interne pour remplir le modèle. L'instruction comprend le filtre et la clause « ORDER BY ».

Voir également ` filter()` et ` orderByClause()`.

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

Réimplémente : QAbstractItemModel::setData(const QModelIndex &index, const QVariant &value, int role).

Définit les données de l'élément index pour le rôle role sur value.

Pour la stratégie d'édition OnFieldChange, un index ne peut recevoir de modification que si aucun autre index ne dispose d'une modification mise en cache. Les modifications sont validées immédiatement. Cependant, les lignes qui n'ont pas encore été insérées dans la base de données peuvent être modifiées librement et ne sont pas validées automatiquement. Les modifications validées ne sont pas annulées en cas d'échec.

Pour la stratégie « OnRowChange », un index ne peut recevoir une modification que si aucune autre ligne ne dispose d’une modification mise en cache. Les modifications ne sont pas soumises automatiquement.

Renvoie ` true ` si ` value ` est égal à la valeur actuelle. Cependant, la valeur ne sera pas soumise à la base de données.

Renvoie « true » si la valeur a pu être définie, ou « false » en cas d’erreur, par exemple si « index » est hors limites.

Renvoie « false » si le rôle n’est pas « Qt::EditRole ». Pour définir des données pour des rôles autres que « EditRole », utilisez soit un modèle de proxy personnalisé, soit une sous-classe de « QSqlTableModel ».

Voir également editStrategy(), data(), submit(), submitAll() et revertRow().

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

Définit la stratégie de modification des valeurs dans la base de données sur « strategy ».

Cela annulera toutes les modifications en attente.

Voir également editStrategy() et revertAll().

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

Définit le filtre actuel sur « filter ».

Le filtre est une clause SQL « WHERE » sans le mot-clé « WHERE » (par exemple, « name='Josephine') »).

Si le modèle est déjà renseigné avec des données provenant d’une base de données, celui-ci les resélectionne à l’aide du nouveau filtre. Sinon, le filtre sera appliqué lors du prochain appel de la fonction ` select()`.

Voir également filter(), select(), selectStatement() et orderByClause().

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

Méthode protégée permettant aux sous-classes de définir la clé primaire sur key.

Normalement, l'index primaire est défini automatiquement chaque fois que vous appelez setTable().

Voir également primaryKey() et QSqlDatabase::primaryIndex().

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

Applique la fonction « values » aux champs « row » du modèle. Les champs source et cible sont mis en correspondance en fonction de leur nom, et non de leur position dans l'enregistrement.

Notez que les indicateurs générés dans values sont conservés afin de déterminer si les champs correspondants sont utilisés lorsque des modifications sont soumises à la base de données. Par défaut, il est défini sur true pour tous les champs d’un QSqlRecord. Vous devez définir l’indicateur sur false en utilisant setGenerated(false) pour toute valeur de values, afin d’enregistrer les modifications dans la base de données.

Pour les stratégies de modification OnFieldChange et OnRowChange, une ligne ne peut faire l’objet d’une modification que si aucune autre ligne ne présente de modification mise en cache. Les modifications sont soumises immédiatement. Les modifications soumises ne sont pas annulées en cas d’échec.

Renvoie true si toutes les valeurs ont pu être définies ; sinon, renvoie false.

Voir également record() et editStrategy().

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

Définit l'ordre de tri de column à order. Cela n'affecte pas les données actuelles ; pour actualiser les données selon le nouvel ordre de tri, appelez la fonction select().

Voir également sort(), select() et orderByClause().

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

Définit la table de base de données sur laquelle le modèle opère sur « tableName ». Ne sélectionne pas de données dans la table, mais récupère les informations relatives à ses champs.

Pour remplir le modèle avec les données de la table, appelez la fonction ` select()`.

Les informations d’erreur peuvent être récupérées à l’aide de ` lastError()`.

Voir également select(), setFilter() et lastError().

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

Réimplémente : QAbstractItemModel::sort(int column, Qt::SortOrder order).

Trie les données selon column avec l'ordre de tri order. Cela sélectionnera immédiatement les données ; utilisez setSort() pour définir un ordre de tri sans remplir le modèle avec des données.

Voir également setSort(), select() et orderByClause().

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

Réimplémente : QAbstractItemModel::submit().

Cet emplacement réimplémenté est appelé par les délégués d’élément lorsque l’utilisateur cesse de modifier la ligne actuelle.

Soumet la ligne en cours d'édition si la stratégie du modèle est définie sur « OnRowChange » ou « OnFieldChange ». Ne fait rien pour la stratégie « OnManualSubmit ».

Utilisez ` submitAll()` pour valider toutes les modifications en attente lorsque la stratégie est définie sur ` OnManualSubmit `.

Renvoie ` true ` en cas de succès ; sinon, renvoie ` false`. Utilisez ` lastError()` pour interroger les informations détaillées sur les erreurs.

Ne réinitialise pas automatiquement le modèle. Les lignes soumises sont actualisées à partir de la base de données en cas de réussite.

Voir également revert(), revertRow(), submitAll(), revertAll() et lastError().

[slot] bool QSqlTableModel::submitAll()

Soumet toutes les modifications en attente et renvoie « true » en cas de réussite. Renvoie « false » en cas d'erreur ; des informations détaillées sur l'erreur peuvent être obtenues à l'aide de lastError().

En mode « OnManualSubmit », en cas de réussite, le modèle sera réactualisé. Toutes les vues qui l'affichent perdront leurs sélections.

Remarque : en mode « OnManualSubmit », les modifications déjà soumises ne seront pas effacées du cache si la fonction submitAll() échoue. Cela permet de revenir en arrière et de resoumettre les transactions sans perte de données.

Voir également revertAll() et lastError().

QString QSqlTableModel::tableName() const

Renvoie le nom de la table actuellement sélectionnée.

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

Met à jour l'row donné dans la table de la base de données actuellement active avec l'values spécifié. Renvoie true en cas de succès ; sinon, renvoie false.

Il s’agit d’une méthode de bas niveau qui opère directement sur la base de données et qui ne doit pas être appelée directement. Utilisez ` setData()` pour mettre à jour les valeurs. Le modèle décidera, en fonction de sa stratégie d’édition, quand modifier la base de données.

Notez que seules les valeurs pour lesquelles l’indicateur « generated » est activé sont mises à jour. L’indicateur « generated » peut être activé avec QSqlRecord::setGenerated() et vérifié avec QSqlRecord::isGenerated().

Voir également QSqlRecord::isGenerated() et setData().

© 2026 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.