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. Plus d'informations...

En-tête : #include <QSqlTableModel>
CMake : find_package(Qt6 REQUIRED COMPONENTS Sql)
target_link_libraries(mytarget PRIVATE Qt6::Sql)
qmake : QT += sql
Hérite : 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

Emplacements 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 est construite au-dessus de 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 étiquettes affichées dans l'en-tête de la vue. La stratégie d'édition détermine le moment où les modifications apportées par l'utilisateur dans la vue sont réellement 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 de manière programmatique, 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 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 des données.

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

QSqlTableModel ne prend pas directement en charge les clés étrangères. Utilisez les sites 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écrit la stratégie à choisir pour modifier des valeurs dans la base de données.

ConstanteValeurDescription de la stratégie
QSqlTableModel::OnFieldChange0Toutes les modifications apportées au modèle seront appliquées immédiatement à 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 submitAll() ou revertAll() soit appelé.

Remarque : pour éviter d'insérer dans la base de données des lignes partiellement initialisées, OnFieldChange se comportera comme OnRowChange pour les lignes nouvellement insérées.

Voir aussi setEditStrategy().

Documentation des fonctions membres

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

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

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

[virtual noexcept] QSqlTableModel::~QSqlTableModel()

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

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

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

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

Ce signal est émis par insertRowIntoTable() avant qu'une nouvelle ligne ne soit insérée dans la table de la 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 d'être insérées.

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

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

Notez que seules les valeurs marquées comme générées seront mises à jour. Le drapeau "generated" 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 le site row de la table de la 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 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, quand 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 aussi 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 l'ensemble de résultats de la base de données pour l'adresse item donnée dans le modèle.

La valeur renvoyée est identique à item si aucune colonne ou 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 dans le jeu de résultats.

Voir aussi QSqlQueryModel::indexInQuery().

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

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

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

Les modifications sont soumises immédiatement pour OnFieldChange et OnRowChange. Un échec ne laisse pas de nouvelle ligne dans le 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 la 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 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, quand modifier la base de données.

Retourne true si les valeurs ont pu être insérées, sinon false. Les informations d'erreur peuvent être récupérées avec lastError().

Voir aussi 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 de modification OnFieldChange et OnRowChange, une seule ligne peut être insérée à la fois et le modèle ne peut 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 des valeurs qui ont été modifiées dans le modèle mais qui n'ont pas encore été écrites dans la base de données.

Si index est invalide ou pointe vers une ligne inexistante, false est renvoyé.

bool QSqlTableModel::isDirty() const

Retourne true si le modèle contient des valeurs modifiées qui n'ont pas été validé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 basée sur l'ordre de tri actuellement défini.

Voir aussi setSort() et selectStatement().

QSqlIndex QSqlTableModel::primaryKey() const

Renvoie la clé primaire de la table courante, ou un QSqlIndex vide si la table n'est pas définie ou n'a pas de clé primaire.

Voir aussi setTable(), setPrimaryKey() et QSqlDatabase::primaryIndex().

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

Renvoie un enregistrement contenant les champs représentés dans la clé primaire dont les valeurs sont définies à l'adresse row. Si aucune clé primaire n'est définie, l'enregistrement renvoyé contiendra tous les champs.

Voir aussi primaryKey().

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

Ce signal est émis par insertRows(), lorsqu'une insertion est initiée dans le paramètre row de la table de 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 attribuer à certains champs des valeurs par défaut et définir les drapeaux générés pour ces champs. N'essayez pas de modifier l'enregistrement par d'autres moyens tels que setData() ou setRecord() lorsque vous traitez ce signal.

QSqlRecord QSqlTableModel::record() const

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

Elle renvoie un enregistrement vide, contenant uniquement les noms des champs. Cette fonction peut être utilisée pour récupérer les noms des champs d'un enregistrement.

Voir aussi setRecord() et QSqlRecord::isEmpty().

QSqlRecord QSqlTableModel::record(int row) const

Renvoie l'enregistrement à row dans le modèle.

Si row est l'index d'une ligne valide, l'enregistrement sera rempli 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, à partir de l'index column.

Retourne si les colonnes ont été supprimées avec succès ; sinon, retourne 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. Comme 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 de modification est OnManualSubmit, la suppression des lignes de la base de données est retardée jusqu'à ce que submitAll() soit appelé.

Pour OnFieldChange et OnRowChange, une seule ligne peut être supprimée à la fois et seulement si aucune autre ligne n'a de modification mise en cache. Les suppressions sont soumises immédiatement à la base de données. Le modèle conserve une ligne vierge pour la ligne supprimée avec succès jusqu'à ce qu'elle soit rafraîchie avec select().

En cas d'échec de la suppression, l'opération n'est pas annulée dans le modèle. L'application peut soumettre à nouveau ou annuler l'opération.

Les lignes insérées mais non encore soumises 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 row + count > rowCount(), aucune action n'est entreprise et false est renvoyé. 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().

Ce slot réimplémenté est appelé par les délégués des éléments lorsque l'utilisateur a annulé l'édition de la ligne en cours.

Annule les modifications si la stratégie du modèle est définie sur OnRowChange ou OnFieldChange. 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 aussi submit(), submitAll(), revertRow() et revertAll().

[slot] void QSqlTableModel::revertAll()

Annule toutes les modifications en cours.

Voir aussi revert(), revertRow(), et submitAll().

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

Annule tous les changements pour le site row spécifié.

Voir aussi 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 qui a été définie via setTable(), en utilisant le filtre et la condition de tri spécifiés, et renvoie true en cas de succès ; sinon, renvoie false.

Remarque : L'appel à select() annulera toutes les modifications non soumises et supprimera toutes les colonnes insérées.

Voir aussi setTable(), setFilter() et selectStatement().

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

Actualise row dans le modèle avec les valeurs de la ligne de la table de la base de données correspondant aux valeurs de la clé primaire. Sans 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 false.

Voir également select().

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

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

Voir aussi 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 à value.

Pour la stratégie d'édition OnFieldChange, un index ne peut recevoir une modification que si aucun autre index n'a de modification mise en cache. Les modifications sont soumises immédiatement. Toutefois, 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 soumises automatiquement. Les modifications soumises ne sont pas annulées en cas d'échec.

Pour OnRowChange, un index ne peut recevoir une modification que si aucune autre ligne n'a fait l'objet 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 peut ê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 un modèle proxy personnalisé ou sous-classez QSqlTableModel.

Voir aussi 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 à strategy.

Cette stratégie annulera toutes les modifications en cours.

Voir aussi editStrategy() et revertAll().

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

Définit le filtre actuel à filter.

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

Si le modèle est déjà alimenté par des données provenant d'une base de données, le modèle les re-sélectionne avec le nouveau filtre. Sinon, le filtre sera appliqué lors du prochain appel à select().

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

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

Méthode protégée qui permet aux sous-classes de définir la clé primaire à key.

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

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

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

Applique values à row dans le modèle. Les champs source et cible sont mappés par nom de champ, et non par position dans l'enregistrement.

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

Pour les stratégies de modification OnFieldChange et OnRowChange, une ligne ne peut recevoir une modification que si aucune autre ligne n'a 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 rafraîchir les données en utilisant le nouvel ordre de tri, appelez select().

Voir aussi sort(), select() et orderByClause().

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

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

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

Les informations d'erreur peuvent être récupérées avec 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 par column avec l'ordre de tri order. Ceci 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().

Ce slot réimplémenté est appelé par les délégués des éléments lorsque l'utilisateur a cessé d'éditer la ligne en cours.

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

Utilisez submitAll() pour soumettre toutes les modifications en attente pour la stratégie OnManualSubmit.

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

Ne remplit pas automatiquement le modèle. Les lignes soumises sont rafraîchies à partir de la base de données en cas de succès.

Voir aussi revert(), revertRow(), submitAll(), revertAll() et lastError().

[slot] bool QSqlTableModel::submitAll()

Soumet tous les changements en attente et renvoie true en cas de succès. Renvoie false en cas d'erreur, des informations détaillées sur les erreurs peuvent être obtenues avec lastError().

Dans OnManualSubmit, en cas de succès, le modèle sera repeuplé. Toutes les vues qui le présentent perdent leurs sélections.

Remarque : en mode OnManualSubmit, les modifications déjà soumises ne seront pas effacées du cache lorsque submitAll() échoue. Cela permet d'annuler les transactions et de les soumettre à nouveau sans perdre de données.

Voir aussi revertAll() et lastError().

QString QSqlTableModel::tableName() const

Renvoie le nom du tableau actuellement sélectionné.

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

Met à jour le site row dans la table de la base de données actuellement active avec le site 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 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 le drapeau generated est activé sont mises à jour. Le drapeau généré peut être défini avec QSqlRecord::setGenerated() et testé 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.