Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
QSqlTableModel Class Reference

The QSqlTableModel class provides an editable data model for a single database table. More...

#include <qsqltablemodel.h>

+ Inheritance diagram for QSqlTableModel:
+ Collaboration diagram for QSqlTableModel:

Public Types

enum  EditStrategy { OnFieldChange , OnRowChange , OnManualSubmit }
 This enum type describes which strategy to choose when editing values in the database. More...
 
- Public Types inherited from QAbstractItemModel
enum  LayoutChangeHint { NoLayoutChangeHint , VerticalSortHint , HorizontalSortHint }
 This enum describes the way the model changes layout. More...
 
enum class  CheckIndexOption { NoOption = 0x0000 , IndexIsValid = 0x0001 , DoNotUseParent = 0x0002 , ParentIsInvalid = 0x0004 }
 

Public Slots

virtual bool select ()
 Populates the model with data from the table that was set via setTable(), using the specified filter and sort condition, and returns true if successful; otherwise returns false.
 
virtual bool selectRow (int row)
 
bool submit () override
 This reimplemented slot is called by the item delegates when the user stopped editing the current row.
 
void revert () override
 This reimplemented slot is called by the item delegates when the user canceled editing the current row.
 
bool submitAll ()
 Submits all pending changes and returns true on success.
 
void revertAll ()
 Reverts all pending changes.
 
- Public Slots inherited from QAbstractItemModel
virtual bool submit ()
 Lets the model know that it should submit cached information to permanent storage.
 
virtual void revert ()
 Lets the model know that it should discard cached information.
 
- Public Slots inherited from QObject
void deleteLater ()
 \threadsafe
 

Signals

void primeInsert (int row, QSqlRecord &record)
 This signal is emitted by insertRows(), when an insertion is initiated in the given row of the currently active database table.
 
void beforeInsert (QSqlRecord &record)
 This signal is emitted by insertRowIntoTable() before a new row is inserted into the currently active database table.
 
void beforeUpdate (int row, QSqlRecord &record)
 This signal is emitted by updateRowInTable() before the row is updated in the currently active database table with the values from record.
 
void beforeDelete (int row)
 This signal is emitted by deleteRowFromTable() before the row is deleted from the currently active database table.
 
- Signals inherited from QAbstractItemModel
void dataChanged (const QModelIndex &topLeft, const QModelIndex &bottomRight, const QList< int > &roles=QList< int >())
 This signal is emitted whenever the data in an existing item changes.
 
void headerDataChanged (Qt::Orientation orientation, int first, int last)
 This signal is emitted whenever a header is changed.
 
void layoutChanged (const QList< QPersistentModelIndex > &parents=QList< QPersistentModelIndex >(), QAbstractItemModel::LayoutChangeHint hint=QAbstractItemModel::NoLayoutChangeHint)
 
void layoutAboutToBeChanged (const QList< QPersistentModelIndex > &parents=QList< QPersistentModelIndex >(), QAbstractItemModel::LayoutChangeHint hint=QAbstractItemModel::NoLayoutChangeHint)
 
void rowsAboutToBeInserted (const QModelIndex &parent, int first, int last, QPrivateSignal)
 This signal is emitted just before rows are inserted into the model.
 
void rowsInserted (const QModelIndex &parent, int first, int last, QPrivateSignal)
 This signal is emitted after rows have been inserted into the model.
 
void rowsAboutToBeRemoved (const QModelIndex &parent, int first, int last, QPrivateSignal)
 This signal is emitted just before rows are removed from the model.
 
void rowsRemoved (const QModelIndex &parent, int first, int last, QPrivateSignal)
 This signal is emitted after rows have been removed from the model.
 
void columnsAboutToBeInserted (const QModelIndex &parent, int first, int last, QPrivateSignal)
 This signal is emitted just before columns are inserted into the model.
 
void columnsInserted (const QModelIndex &parent, int first, int last, QPrivateSignal)
 This signal is emitted after columns have been inserted into the model.
 
void columnsAboutToBeRemoved (const QModelIndex &parent, int first, int last, QPrivateSignal)
 This signal is emitted just before columns are removed from the model.
 
void columnsRemoved (const QModelIndex &parent, int first, int last, QPrivateSignal)
 This signal is emitted after columns have been removed from the model.
 
void modelAboutToBeReset (QPrivateSignal)
 
void modelReset (QPrivateSignal)
 
void rowsAboutToBeMoved (const QModelIndex &sourceParent, int sourceStart, int sourceEnd, const QModelIndex &destinationParent, int destinationRow, QPrivateSignal)
 
void rowsMoved (const QModelIndex &sourceParent, int sourceStart, int sourceEnd, const QModelIndex &destinationParent, int destinationRow, QPrivateSignal)
 
void columnsAboutToBeMoved (const QModelIndex &sourceParent, int sourceStart, int sourceEnd, const QModelIndex &destinationParent, int destinationColumn, QPrivateSignal)
 
void columnsMoved (const QModelIndex &sourceParent, int sourceStart, int sourceEnd, const QModelIndex &destinationParent, int destinationColumn, QPrivateSignal)
 
- Signals inherited from QObject
void destroyed (QObject *=nullptr)
 This signal is emitted immediately before the object obj is destroyed, after any instances of QPointer have been notified, and cannot be blocked.
 
void objectNameChanged (const QString &objectName, QPrivateSignal)
 This signal is emitted after the object's name has been changed.
 

Public Member Functions

 QSqlTableModel (QObject *parent=nullptr, const QSqlDatabase &db=QSqlDatabase())
 Creates an empty QSqlTableModel and sets the parent to parent and the database connection to db.
 
virtual ~QSqlTableModel ()
 Destroys the object and frees any allocated resources.
 
virtual void setTable (const QString &tableName)
 Sets the database table on which the model operates to tableName.
 
QString tableName () const
 Returns the name of the currently selected table.
 
Qt::ItemFlags flags (const QModelIndex &index) const override
 \reimp
 
QSqlRecord record () const
 This is an overloaded function.
 
QSqlRecord record (int row) const
 
QVariant data (const QModelIndex &idx, int role=Qt::DisplayRole) const override
 \reimp
 
bool setData (const QModelIndex &index, const QVariant &value, int role=Qt::EditRole) override
 Sets the data for the item index for the role role to value.
 
bool clearItemData (const QModelIndex &index) override
 \reimp
 
QVariant headerData (int section, Qt::Orientation orientation, int role=Qt::DisplayRole) const override
 \reimp
 
bool isDirty () const
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
bool isDirty (const QModelIndex &index) const
 Returns true if the value at the index index is dirty, otherwise false.
 
void clear () override
 \reimp
 
virtual void setEditStrategy (EditStrategy strategy)
 Sets the strategy for editing values in the database to strategy.
 
EditStrategy editStrategy () const
 Returns the current edit strategy.
 
QSqlIndex primaryKey () const
 Returns the primary key for the current table, or an empty QSqlIndex if the table is not set or has no primary key.
 
QSqlDatabase database () const
 Returns the model's database connection.
 
int fieldIndex (const QString &fieldName) const
 Returns the index of the field fieldName, or -1 if no corresponding field exists in the model.
 
void sort (int column, Qt::SortOrder order) override
 Sorts the data by column with the sort order order.
 
virtual void setSort (int column, Qt::SortOrder order)
 Sets the sort order for column to order.
 
QString filter () const
 Returns the currently set filter.
 
virtual void setFilter (const QString &filter)
 Sets the current filter to filter.
 
int rowCount (const QModelIndex &parent=QModelIndex()) const override
 \reimp
 
bool removeColumns (int column, int count, const QModelIndex &parent=QModelIndex()) override
 Removes count columns from the parent model, starting at index column.
 
bool removeRows (int row, int count, const QModelIndex &parent=QModelIndex()) override
 Removes count rows starting at row.
 
bool insertRows (int row, int count, const QModelIndex &parent=QModelIndex()) override
 Inserts count empty rows at position row.
 
bool insertRecord (int row, const QSqlRecord &record)
 Inserts the record at position row.
 
bool setRecord (int row, const QSqlRecord &record)
 Applies values to the row in the model.
 
virtual void revertRow (int row)
 Reverts all changes for the specified row.
 
- Public Member Functions inherited from QSqlQueryModel
 QSqlQueryModel (QObject *parent=nullptr)
 Creates an empty QSqlQueryModel with the given parent.
 
virtual ~QSqlQueryModel ()
 Destroys the object and frees any allocated resources.
 
int columnCount (const QModelIndex &parent=QModelIndex()) const override
 \reimp
 
QSqlRecord record (int row) const
 Returns the record containing information about the fields of the current query.
 
QSqlRecord record () const
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.Returns an empty record containing information about the fields of the current query.
 
bool setHeaderData (int section, Qt::Orientation orientation, const QVariant &value, int role=Qt::EditRole) override
 Sets the caption for a horizontal header for the specified role to value.
 
bool insertColumns (int column, int count, const QModelIndex &parent=QModelIndex()) override
 Inserts count columns into the model at position column.
 
bool removeColumns (int column, int count, const QModelIndex &parent=QModelIndex()) override
 Removes count columns from the model starting from position column.
 
void setQuery (QSqlQuery &&query)
 Resets the model and sets the data provider to be the given query.
 
void setQuery (const QString &query, const QSqlDatabase &db=QSqlDatabase())
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.Executes the query query for the given database connection db.
 
const QSqlQueryquery (QT6_DECL_NEW_OVERLOAD) const
 Returns a reference to the const QSqlQuery object associated with this model.
 
QSqlError lastError () const
 Returns information about the last error that occurred on the database.
 
void fetchMore (const QModelIndex &parent=QModelIndex()) override
 Fetches more rows from a database.
 
bool canFetchMore (const QModelIndex &parent=QModelIndex()) const override
 Returns true if it is possible to read more rows from the database.
 
QHash< int, QByteArrayroleNames () const override
 
- Public Member Functions inherited from QAbstractTableModel
 QAbstractTableModel (QObject *parent=nullptr)
 Constructs an abstract table model for the given parent.
 
 ~QAbstractTableModel ()
 Destroys the abstract table model.
 
QModelIndex index (int row, int column, const QModelIndex &parent=QModelIndex()) const override
 Returns the index of the data in row and column with parent.
 
QModelIndex sibling (int row, int column, const QModelIndex &idx) const override
 \reimp
 
bool dropMimeData (const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) override
 \reimp
 
QObjectparent () const
 Returns a pointer to the parent object.
 
- Public Member Functions inherited from QAbstractItemModel
 QAbstractItemModel (QObject *parent=nullptr)
 Constructs an abstract item model with the given parent.
 
virtual ~QAbstractItemModel ()
 Destroys the abstract item model.
 
Q_INVOKABLE bool hasIndex (int row, int column, const QModelIndex &parent=QModelIndex()) const
 Returns {true} if the model returns a valid QModelIndex for row and column with parent, otherwise returns {false}.
 
virtual QMap< int, QVariantitemData (const QModelIndex &index) const
 Returns a map with values for all predefined roles in the model for the item at the given index.
 
virtual bool setItemData (const QModelIndex &index, const QMap< int, QVariant > &roles)
 Sets the role data for the item at index to the associated value in roles, for every Qt::ItemDataRole.
 
virtual QStringList mimeTypes () const
 Returns the list of allowed MIME types.
 
virtual QMimeDatamimeData (const QModelIndexList &indexes) const
 Returns an object that contains serialized items of data corresponding to the list of indexes specified.
 
virtual bool canDropMimeData (const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) const
 Returns {true} if a model can accept a drop of the data.
 
virtual Qt::DropActions supportedDropActions () const
 
virtual Qt::DropActions supportedDragActions () const
 Returns the actions supported by the data in this model.
 
Q_INVOKABLE Q_REVISION (6, 4) virtual bool insertRows(int row
 
Q_INVOKABLE Q_REVISION (6, 4) virtual bool insertColumns(int column
 
Q_INVOKABLE Q_REVISION (6, 4) virtual bool removeRows(int row
 
Q_INVOKABLE Q_REVISION (6, 4) virtual bool removeColumns(int column
 
Q_INVOKABLE Q_REVISION (6, 4) virtual bool moveRows(const QModelIndex &sourceParent
 
Q_INVOKABLE Q_REVISION (6, 4) virtual bool moveColumns(const QModelIndex &sourceParent
 
Q_INVOKABLE Q_REVISION (6, 4) inline bool insertRow(int row
 
Q_INVOKABLE Q_REVISION (6, 4) inline bool insertColumn(int column
 
Q_INVOKABLE Q_REVISION (6, 4) inline bool removeRow(int row
 
Q_INVOKABLE Q_REVISION (6, 4) inline bool removeColumn(int column
 
Q_INVOKABLE Q_REVISION (6, 4) inline bool moveRow(const QModelIndex &sourceParent
 
Q_INVOKABLE Q_REVISION (6, 4) inline bool moveColumn(const QModelIndex &sourceParent
 
Q_INVOKABLE Q_REVISION (6, 4) virtual void sort(int column
 
virtual QModelIndex buddy (const QModelIndex &index) const
 Returns a model index for the buddy of the item represented by index.
 
virtual Q_INVOKABLE QModelIndexList match (const QModelIndex &start, int role, const QVariant &value, int hits=1, Qt::MatchFlags flags=Qt::MatchFlags(Qt::MatchStartsWith|Qt::MatchWrap)) const
 Returns a list of indexes for the items in the column of the start index where data stored under the given role matches the specified value.
 
virtual QSize span (const QModelIndex &index) const
 Returns the row and column span of the item represented by index.
 
bool checkIndex (const QModelIndex &index, CheckIndexOptions options=CheckIndexOption::NoOption) const
 
virtual void multiData (const QModelIndex &index, QModelRoleDataSpan roleDataSpan) const
 
QObjectparent () const
 Returns a pointer to the parent object.
 
- Public Member Functions inherited from QObject
Q_INVOKABLE QObject (QObject *parent=nullptr)
 Constructs an object with parent object parent.
 
virtual ~QObject ()
 Destroys the object, deleting all its child objects.
 
virtual bool event (QEvent *event)
 This virtual function receives events to an object and should return true if the event e was recognized and processed.
 
virtual bool eventFilter (QObject *watched, QEvent *event)
 Filters events if this object has been installed as an event filter for the watched object.
 
QString objectName () const
 
Q_WEAK_OVERLOAD void setObjectName (const QString &name)
 Sets the object's name to name.
 
void setObjectName (QAnyStringView name)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
QBindable< QStringbindableObjectName ()
 
bool isWidgetType () const
 Returns true if the object is a widget; otherwise returns false.
 
bool isWindowType () const
 Returns true if the object is a window; otherwise returns false.
 
bool isQuickItemType () const
 Returns true if the object is a QQuickItem; otherwise returns false.
 
bool signalsBlocked () const noexcept
 Returns true if signals are blocked; otherwise returns false.
 
bool blockSignals (bool b) noexcept
 If block is true, signals emitted by this object are blocked (i.e., emitting a signal will not invoke anything connected to it).
 
QThreadthread () const
 Returns the thread in which the object lives.
 
bool moveToThread (QThread *thread QT6_DECL_NEW_OVERLOAD_TAIL)
 Changes the thread affinity for this object and its children and returns true on success.
 
int startTimer (int interval, Qt::TimerType timerType=Qt::CoarseTimer)
 This is an overloaded function that will start a timer of type timerType and a timeout of interval milliseconds.
 
int startTimer (std::chrono::nanoseconds time, Qt::TimerType timerType=Qt::CoarseTimer)
 
void killTimer (int id)
 Kills the timer with timer identifier, id.
 
void killTimer (Qt::TimerId id)
 
template<typename T >
findChild (QAnyStringView aName, Qt::FindChildOptions options=Qt::FindChildrenRecursively) const
 Returns the child of this object that can be cast into type T and that is called name, or \nullptr if there is no such object.
 
template<typename T >
QList< T > findChildren (QAnyStringView aName, Qt::FindChildOptions options=Qt::FindChildrenRecursively) const
 Returns all children of this object with the given name that can be cast to type T, or an empty list if there are no such objects.
 
template<typename T >
findChild (Qt::FindChildOptions options=Qt::FindChildrenRecursively) const
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
template<typename T >
QList< T > findChildren (Qt::FindChildOptions options=Qt::FindChildrenRecursively) const
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
const QObjectListchildren () const
 Returns a list of child objects.
 
void setParent (QObject *parent)
 Makes the object a child of parent.
 
void installEventFilter (QObject *filterObj)
 Installs an event filter filterObj on this object.
 
void removeEventFilter (QObject *obj)
 Removes an event filter object obj from this object.
 
QMetaObject::Connection connect (const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoConnection) const
 
bool disconnect (const char *signal=nullptr, const QObject *receiver=nullptr, const char *member=nullptr) const
 
bool disconnect (const QObject *receiver, const char *member=nullptr) const
 
void dumpObjectTree () const
 Dumps a tree of children to the debug output.
 
void dumpObjectInfo () const
 Dumps information about signal connections, etc.
 
bool setProperty (const char *name, const QVariant &value)
 Sets the value of the object's name property to value.
 
bool setProperty (const char *name, QVariant &&value)
 
QVariant property (const char *name) const
 Returns the value of the object's name property.
 
QList< QByteArraydynamicPropertyNames () const
 
QBindingStoragebindingStorage ()
 
const QBindingStoragebindingStorage () const
 
QObjectparent () const
 Returns a pointer to the parent object.
 
bool inherits (const char *classname) const
 Returns true if this object is an instance of a class that inherits className or a QObject subclass that inherits className; otherwise returns false.
 

Protected Member Functions

 QSqlTableModel (QSqlTableModelPrivate &dd, QObject *parent=nullptr, const QSqlDatabase &db=QSqlDatabase())
 
virtual bool updateRowInTable (int row, const QSqlRecord &values)
 Updates the given row in the currently active database table with the specified values.
 
virtual bool insertRowIntoTable (const QSqlRecord &values)
 Inserts the values values into the currently active database table.
 
virtual bool deleteRowFromTable (int row)
 Deletes the given row from the currently active database table.
 
virtual QString orderByClause () const
 Returns an SQL {ORDER BY} clause based on the currently set sort order.
 
virtual QString selectStatement () const
 Returns the SQL SELECT statement used internally to populate the model.
 
void setPrimaryKey (const QSqlIndex &key)
 Protected method that allows subclasses to set the primary key to key.
 
QModelIndex indexInQuery (const QModelIndex &item) const override
 Returns the index of the value in the database result set for the given item in the model.
 
QSqlRecord primaryValues (int row) const
 
- Protected Member Functions inherited from QSqlQueryModel
void beginInsertRows (const QModelIndex &parent, int first, int last)
 
void endInsertRows ()
 
void beginRemoveRows (const QModelIndex &parent, int first, int last)
 
void endRemoveRows ()
 
void beginInsertColumns (const QModelIndex &parent, int first, int last)
 
void endInsertColumns ()
 
void beginRemoveColumns (const QModelIndex &parent, int first, int last)
 
void endRemoveColumns ()
 
void beginResetModel ()
 
void endResetModel ()
 
virtual void queryChange ()
 This virtual function is called whenever the query changes.
 
void setLastError (const QSqlError &error)
 Protected function which allows derived classes to set the value of the last error that occurred on the database to error.
 
 QSqlQueryModel (QSqlQueryModelPrivate &dd, QObject *parent=nullptr)
 
- Protected Member Functions inherited from QAbstractTableModel
 QAbstractTableModel (QAbstractItemModelPrivate &dd, QObject *parent)
 
- Protected Member Functions inherited from QAbstractItemModel
 QAbstractItemModel (QAbstractItemModelPrivate &dd, QObject *parent=nullptr)
 
QModelIndex createIndex (int row, int column, const void *data=nullptr) const
 Creates a model index for the given row and column with the internal pointer ptr.
 
QModelIndex createIndex (int row, int column, quintptr id) const
 Creates a model index for the given row and column with the internal identifier, id.
 
void encodeData (const QModelIndexList &indexes, QDataStream &stream) const
 
bool decodeData (int row, int column, const QModelIndex &parent, QDataStream &stream)
 
void beginInsertRows (const QModelIndex &parent, int first, int last)
 Begins a row insertion operation.
 
void endInsertRows ()
 Ends a row insertion operation.
 
void beginRemoveRows (const QModelIndex &parent, int first, int last)
 Begins a row removal operation.
 
void endRemoveRows ()
 Ends a row removal operation.
 
bool beginMoveRows (const QModelIndex &sourceParent, int sourceFirst, int sourceLast, const QModelIndex &destinationParent, int destinationRow)
 
void endMoveRows ()
 Ends a row move operation.
 
void beginInsertColumns (const QModelIndex &parent, int first, int last)
 Begins a column insertion operation.
 
void endInsertColumns ()
 Ends a column insertion operation.
 
void beginRemoveColumns (const QModelIndex &parent, int first, int last)
 Begins a column removal operation.
 
void endRemoveColumns ()
 Ends a column removal operation.
 
bool beginMoveColumns (const QModelIndex &sourceParent, int sourceFirst, int sourceLast, const QModelIndex &destinationParent, int destinationColumn)
 Begins a column move operation.
 
void endMoveColumns ()
 Ends a column move operation.
 
void beginResetModel ()
 Begins a model reset operation.
 
void endResetModel ()
 Completes a model reset operation.
 
void changePersistentIndex (const QModelIndex &from, const QModelIndex &to)
 Changes the QPersistentModelIndex that is equal to the given from model index to the given to model index.
 
void changePersistentIndexList (const QModelIndexList &from, const QModelIndexList &to)
 
QModelIndexList persistentIndexList () const
 
- Protected Member Functions inherited from QObject
QObjectsender () const
 Returns a pointer to the object that sent the signal, if called in a slot activated by a signal; otherwise it returns \nullptr.
 
int senderSignalIndex () const
 
int receivers (const char *signal) const
 Returns the number of receivers connected to the signal.
 
bool isSignalConnected (const QMetaMethod &signal) const
 
virtual void timerEvent (QTimerEvent *event)
 This event handler can be reimplemented in a subclass to receive timer events for the object.
 
virtual void childEvent (QChildEvent *event)
 This event handler can be reimplemented in a subclass to receive child events.
 
virtual void customEvent (QEvent *event)
 This event handler can be reimplemented in a subclass to receive custom events.
 
virtual void connectNotify (const QMetaMethod &signal)
 
virtual void disconnectNotify (const QMetaMethod &signal)
 
 QObject (QObjectPrivate &dd, QObject *parent=nullptr)
 

Additional Inherited Members

- Static Public Member Functions inherited from QObject
static QMetaObject::Connection connect (const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection)
 \threadsafe
 
static QMetaObject::Connection connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type=Qt::AutoConnection)
 
template<typename Func1 , typename Func2 >
static QMetaObject::Connection connect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const typename QtPrivate::ContextTypeForFunctor< Func2 >::ContextType *context, Func2 &&slot, Qt::ConnectionType type=Qt::AutoConnection)
 
template<typename Func1 , typename Func2 >
static QMetaObject::Connection connect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, Func2 &&slot)
 
static bool disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *member)
 \threadsafe
 
static bool disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &member)
 
static bool disconnect (const QMetaObject::Connection &)
 Disconnect a connection.
 
template<typename Func1 , typename Func2 >
static bool disconnect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const typename QtPrivate::FunctionPointer< Func2 >::Object *receiver, Func2 slot)
 
template<typename Func1 >
static bool disconnect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const QObject *receiver, void **zero)
 
- Public Attributes inherited from QAbstractItemModel
Q_INVOKABLE int count
 
Q_INVOKABLE int const QModelIndexparent = QModelIndex())
 Returns the parent of the model item with the given index.
 
Q_INVOKABLE int sourceRow
 
Q_INVOKABLE int int count
 
Q_INVOKABLE int int const QModelIndexdestinationParent
 
Q_INVOKABLE int int const QModelIndex int destinationChild
 
Q_INVOKABLE int sourceColumn
 
Q_INVOKABLE const QModelIndexparent = QModelIndex())
 
Q_INVOKABLE int const QModelIndexdestinationParent
 
Q_INVOKABLE int const QModelIndex int destinationChild
 
Q_INVOKABLE Qt::SortOrder order = Qt::AscendingOrder)
 
- Protected Slots inherited from QAbstractItemModel
virtual void resetInternalData ()
 
- Protected Attributes inherited from QObject
QScopedPointer< QObjectDatad_ptr
 
- Properties inherited from QObject
QString objectName
 the name of this object
 

Detailed Description

The QSqlTableModel class provides an editable data model for a single database table.

\inmodule QtSql

QSqlTableModel is a high-level interface for reading and writing database records from a single table. It is built on top of the lower-level QSqlQuery and can be used to provide data to view classes such as QTableView. For example:

model->setTable("employee");
model->select();
view->hideColumn(0); // don't show the ID
view->show();

We set the SQL table's name and the edit strategy, then we set up the labels displayed in the view header. The edit strategy dictates when the changes done by the user in the view are actually applied to the database. The possible values are \l OnFieldChange, \l OnRowChange, and \l OnManualSubmit.

QSqlTableModel can also be used to access a database programmatically, without binding it to a view:

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

The code snippet above extracts the salary field from record 4 in the result set of the query {SELECT * from employee}.

It is possible to set filters using setFilter(), or modify the sort order using setSort(). At the end, you must call select() to populate the model with data.

The \l{tablemodel} example illustrates how to use QSqlTableModel as the data source for a QTableView.

QSqlTableModel provides no direct support for foreign keys. Use the QSqlRelationalTableModel and QSqlRelationalDelegate if you want to resolve foreign keys.

See also
QSqlRelationalTableModel, QSqlQuery, {Model/View Programming}, {Table Model Example}, {Cached SQL Table}

Definition at line 21 of file qsqltablemodel.h.

Member Enumeration Documentation

◆ EditStrategy

This enum type describes which strategy to choose when editing values in the database.

\value OnFieldChange All changes to the model will be applied immediately to the database. \value OnRowChange Changes to a row will be applied when the user selects a different row. \value OnManualSubmit All changes will be cached in the model until either submitAll() or revertAll() is called.

Note: To prevent inserting only partly initialized rows into the database, OnFieldChange will behave like OnRowChange for newly inserted rows.

See also
setEditStrategy()
Enumerator
OnFieldChange 
OnRowChange 
OnManualSubmit 

Definition at line 28 of file qsqltablemodel.h.

Constructor & Destructor Documentation

◆ QSqlTableModel() [1/2]

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

Creates an empty QSqlTableModel and sets the parent to parent and the database connection to db.

If db is not valid, the default database connection will be used.

The default edit strategy is \l OnRowChange.

Definition at line 260 of file qsqltablemodel.cpp.

References d, QSqlDatabase::database(), and db.

+ Here is the call graph for this function:

◆ ~QSqlTableModel()

QSqlTableModel::~QSqlTableModel ( )
virtual

Destroys the object and frees any allocated resources.

Definition at line 279 of file qsqltablemodel.cpp.

◆ QSqlTableModel() [2/2]

QSqlTableModel::QSqlTableModel ( QSqlTableModelPrivate & dd,
QObject * parent = nullptr,
const QSqlDatabase & db = QSqlDatabase() )
protected

Definition at line 269 of file qsqltablemodel.cpp.

References d, QSqlDatabase::database(), and db.

+ Here is the call graph for this function:

Member Function Documentation

◆ beforeDelete

QSqlTableModel::beforeDelete ( int row)
signal

This signal is emitted by deleteRowFromTable() before the row is deleted from the currently active database table.

Referenced by deleteRowFromTable().

+ Here is the caller graph for this function:

◆ beforeInsert

QSqlTableModel::beforeInsert ( QSqlRecord & record)
signal

This signal is emitted by insertRowIntoTable() before a new row is inserted into the currently active database table.

The values that are about to be inserted are stored in record and can be modified before they will be inserted.

Referenced by insertRowIntoTable().

+ Here is the caller graph for this function:

◆ beforeUpdate

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

This signal is emitted by updateRowInTable() before the row is updated in the currently active database table with the values from record.

Note that only values that are marked as generated will be updated. The generated flag can be set with \l QSqlRecord::setGenerated() and checked with \l QSqlRecord::isGenerated().

See also
QSqlRecord::isGenerated()

Referenced by updateRowInTable().

+ Here is the caller graph for this function:

◆ clear()

void QSqlTableModel::clear ( )
overridevirtual

\reimp

Reimplemented from QSqlQueryModel.

Definition at line 1236 of file qsqltablemodel.cpp.

References QSqlQueryModel::beginResetModel(), QSqlQueryModel::clear(), d, and QSqlQueryModel::endResetModel().

Referenced by QSqlRelationalTableModel::clear(), and setTable().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ clearItemData()

bool QSqlTableModel::clearItemData ( const QModelIndex & index)
overridevirtual

\reimp

Reimplemented from QAbstractItemModel.

Definition at line 578 of file qsqltablemodel.cpp.

References Qt::EditRole, and setData().

+ Here is the call graph for this function:

◆ data()

QVariant QSqlTableModel::data ( const QModelIndex & idx,
int role = Qt::DisplayRole ) const
overridevirtual

\reimp

Reimplemented from QSqlQueryModel.

Definition at line 439 of file qsqltablemodel.cpp.

References QSet< T >::constEnd(), QSet< T >::constFind(), d, QSqlQueryModel::data(), Qt::DisplayRole, Qt::EditRole, it, and QSqlTableModelPrivate::None.

Referenced by QSqlRelationalTableModel::data(), and setData().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ database()

QSqlDatabase QSqlTableModel::database ( ) const

Returns the model's database connection.

Definition at line 906 of file qsqltablemodel.cpp.

References d.

Referenced by QRelation::populateDictionary(), QRelation::populateModel(), and QSqlRelationalTableModel::selectStatement().

+ Here is the caller graph for this function:

◆ deleteRowFromTable()

bool QSqlTableModel::deleteRowFromTable ( int row)
protectedvirtual

Deletes the given row from the currently active database table.

This is a low-level method that operates directly on the database and should not be called directly. Use removeRow() or removeRows() to delete values. The model will decide depending on its edit strategy when to modify the database.

Returns true if the row was deleted; otherwise returns false.

See also
removeRow(), removeRows()

Definition at line 664 of file qsqltablemodel.cpp.

References beforeDelete(), QSqlQueryModelSql::concat(), d, QSqlDriver::DeleteStatement, emit, QString::isEmpty(), QSqlDriver::PreparedQueries, primaryValues(), QSqlError::StatementError, and QSqlDriver::WhereStatement.

Referenced by submitAll().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ editStrategy()

QSqlTableModel::EditStrategy QSqlTableModel::editStrategy ( ) const

Returns the current edit strategy.

See also
setEditStrategy()

Definition at line 842 of file qsqltablemodel.cpp.

References d.

◆ fieldIndex()

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

Returns the index of the field fieldName, or -1 if no corresponding field exists in the model.

Definition at line 965 of file qsqltablemodel.cpp.

References d.

◆ filter()

QString QSqlTableModel::filter ( ) const

Returns the currently set filter.

See also
setFilter(), select()

Definition at line 1208 of file qsqltablemodel.cpp.

References d.

Referenced by QSqlRelationalTableModel::selectStatement(), and setFilter().

+ Here is the caller graph for this function:

◆ flags()

Qt::ItemFlags QSqlTableModel::flags ( const QModelIndex & index) const
overridevirtual

\reimp

Reimplemented from QAbstractTableModel.

Definition at line 1247 of file qsqltablemodel.cpp.

References d, QSqlTableModelPrivate::Delete, QAbstractItemModel::flags(), QSqlTableModelPrivate::Insert, isDirty(), Qt::ItemIsEditable, OnFieldChange, and OnRowChange.

+ Here is the call graph for this function:

◆ headerData()

QVariant QSqlTableModel::headerData ( int section,
Qt::Orientation orientation,
int role = Qt::DisplayRole ) const
overridevirtual

\reimp

Reimplemented from QSqlQueryModel.

Definition at line 455 of file qsqltablemodel.cpp.

References d, QSqlTableModelPrivate::Delete, Qt::DisplayRole, QSqlQueryModel::headerData(), QSqlTableModelPrivate::Insert, and Qt::Vertical.

+ Here is the call graph for this function:

◆ indexInQuery()

QModelIndex QSqlTableModel::indexInQuery ( const QModelIndex & item) const
overrideprotectedvirtual

Returns the index of the value in the database result set for the given item in the model.

The return value is identical to item if no columns or rows have been inserted, removed, or moved around.

Returns an invalid model index if item is out of bounds or if item does not point to a value in the result set.

See also
QSqlQueryModel::indexInQuery()

Reimplemented from QSqlQueryModel.

Definition at line 1192 of file qsqltablemodel.cpp.

References QSet< T >::constEnd(), QSet< T >::constFind(), QAbstractItemModel::createIndex(), d, QSqlQueryModel::indexInQuery(), QSet< T >::insert(), it, and item.

+ Here is the call graph for this function:

◆ insertRecord()

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

Inserts the record at position row.

If row is negative, the record will be appended to the end. Calls insertRows() and setRecord() internally.

Returns true if the record could be inserted, otherwise false.

Changes are submitted immediately for OnFieldChange and OnRowChange. Failure does not leave a new row in the model.

See also
insertRows(), removeRows(), setRecord()

Definition at line 1155 of file qsqltablemodel.cpp.

References insertRow(), record(), revertRow(), rowCount(), and setRecord().

+ Here is the call graph for this function:

◆ insertRowIntoTable()

bool QSqlTableModel::insertRowIntoTable ( const QSqlRecord & values)
protectedvirtual

Inserts the values values into the currently active database table.

This is a low-level method that operates directly on the database and should not be called directly. Use insertRow() and setData() to insert values. The model will decide depending on its edit strategy when to modify the database.

Returns true if the values could be inserted, otherwise false. Error information can be retrieved with \l lastError().

See also
lastError(), insertRow(), insertRows()

Reimplemented in QSqlRelationalTableModel.

Definition at line 634 of file qsqltablemodel.cpp.

References beforeInsert(), d, emit, QSqlDriver::InsertStatement, QString::isEmpty(), QSqlDriver::PreparedQueries, and QSqlError::StatementError.

Referenced by QSqlRelationalTableModel::insertRowIntoTable(), and submitAll().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ insertRows()

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

Inserts count empty rows at position row.

Note that parent must be invalid, since this model does not support parent-child relations.

For edit strategies OnFieldChange and OnRowChange, only one row may be inserted at a time and the model may not contain other cached changes.

The primeInsert() signal will be emitted for each new row. Connect to it if you want to initialize the new row with default values.

Does not submit rows, regardless of edit strategy.

Returns false if the parameters are out of bounds or the row cannot be inserted; otherwise returns true.

See also
primeInsert(), insertRecord()

Definition at line 1106 of file qsqltablemodel.cpp.

References QSet< T >::begin(), QSqlQueryModel::beginInsertRows(), QAbstractItemModel::count, d, emit, QSet< T >::end(), QSqlQueryModel::endInsertRows(), QSet< T >::erase(), i, QSet< T >::insert(), QSqlTableModelPrivate::Insert, isDirty(), it, OnManualSubmit, QAbstractTableModel::parent(), primeInsert(), and rowCount().

+ Here is the call graph for this function:

◆ isDirty() [1/2]

bool QSqlTableModel::isDirty ( ) const

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Since
5.0

Returns true if the model contains modified values that have not been committed to the database, otherwise false.

Definition at line 475 of file qsqltablemodel.cpp.

References d, and i.

Referenced by flags(), insertRows(), removeRows(), and setRecord().

+ Here is the caller graph for this function:

◆ isDirty() [2/2]

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

Returns true if the value at the index index is dirty, otherwise false.

Dirty values are values that were modified in the model but not yet written into the database.

If index is invalid or points to a non-existing row, false is returned.

Definition at line 494 of file qsqltablemodel.cpp.

References QSet< T >::constEnd(), QSet< T >::constFind(), d, QSqlTableModelPrivate::Delete, QSqlTableModelPrivate::Insert, it, and QSqlTableModelPrivate::Update.

+ Here is the call graph for this function:

◆ orderByClause()

QString QSqlTableModel::orderByClause ( ) const
protectedvirtual

Returns an SQL {ORDER BY} clause based on the currently set sort order.

See also
setSort(), selectStatement()

Reimplemented in QSqlRelationalTableModel.

Definition at line 945 of file qsqltablemodel.cpp.

References QSqlQueryModelSql::asc(), Qt::AscendingOrder, d, QSqlQueryModelSql::desc(), QSqlDriver::FieldName, QSqlQueryModelSql::orderBy(), and QSqlDriver::TableName.

Referenced by QSqlRelationalTableModel::orderByClause(), and selectStatement().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ primaryKey()

QSqlIndex QSqlTableModel::primaryKey ( ) const

Returns the primary key for the current table, or an empty QSqlIndex if the table is not set or has no primary key.

See also
setTable(), setPrimaryKey(), QSqlDatabase::primaryIndex()

Definition at line 882 of file qsqltablemodel.cpp.

References d.

◆ primaryValues()

QSqlRecord QSqlTableModel::primaryValues ( int row) const
protected
Since
5.1 Returns a record containing the fields represented in the primary key set to the values at row. If no primary key is defined, the returned record will contain all fields.
See also
primaryKey()

Definition at line 1404 of file qsqltablemodel.cpp.

References d, QSqlRecord::isEmpty(), QSqlRecord::keyValues(), QSqlTableModelPrivate::None, QSqlTableModelPrivate::ModifiedRow::primaryValues(), and QSqlQueryModel::record().

Referenced by deleteRowFromTable(), selectRow(), and updateRowInTable().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ primeInsert

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

This signal is emitted by insertRows(), when an insertion is initiated in the given row of the currently active database table.

The record parameter can be written to (since it is a reference), for example to populate some fields with default values and set the generated flags of the fields. Do not try to edit the record via other means such as setData() or setRecord() while handling this signal.

Referenced by insertRows().

+ Here is the caller graph for this function:

◆ record() [1/2]

QSqlRecord QSqlTableModel::record ( ) const

This is an overloaded function.

It returns an empty record, having only the field names. This function can be used to retrieve the field names of a record.

See also
QSqlRecord::isEmpty()

Definition at line 1289 of file qsqltablemodel.cpp.

References QSqlQueryModel::record().

Referenced by insertRecord(), QRelation::populateDictionary(), and selectRow().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ record() [2/2]

QSqlRecord QSqlTableModel::record ( int row) const
Since
5.0 Returns the record at row in the model.

If row is the index of a valid row, the record will be populated with values from that row.

If the model is not initialized, an empty record will be returned.

See also
QSqlRecord::isEmpty()

Definition at line 1306 of file qsqltablemodel.cpp.

References QSqlRecord::count(), d, i, QSqlTableModelPrivate::None, QSqlQueryModel::record(), and QSqlRecord::setGenerated().

+ Here is the call graph for this function:

◆ removeColumns()

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

Removes count columns from the parent model, starting at index column.

Returns if the columns were successfully removed; otherwise returns false.

See also
removeRows()

Definition at line 1012 of file qsqltablemodel.cpp.

References QAbstractItemModel::count, d, i, QAbstractTableModel::parent(), and select().

Referenced by QSqlRelationalTableModel::removeColumns().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ removeRows()

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

Removes count rows starting at row.

Since this model does not support hierarchical structures, parent must be an invalid model index.

When the edit strategy is OnManualSubmit, deletion of rows from the database is delayed until submitAll() is called.

For OnFieldChange and OnRowChange, only one row may be deleted at a time and only if no other row has a cached change. Deletions are submitted immediately to the database. The model retains a blank row for successfully deleted row until refreshed with select().

After failed deletion, the operation is not reverted in the model. The application may resubmit or revert.

Inserted but not yet successfully submitted rows in the range to be removed are immediately removed from the model.

Before a row is deleted from the database, the beforeDelete() signal is emitted.

If row < 0 or row + count > rowCount(), no action is taken and false is returned. Returns true if all rows could be removed; otherwise returns false. Detailed database error information can be retrieved using lastError().

See also
removeColumns(), insertRows()

Definition at line 1053 of file qsqltablemodel.cpp.

References d, QSqlTableModelPrivate::Delete, emit, QAbstractItemModel::headerDataChanged(), QSqlTableModelPrivate::Insert, isDirty(), QSqlTableModelPrivate::None, OnManualSubmit, QAbstractTableModel::parent(), QSqlQueryModel::record(), revertRow(), rowCount(), submit(), and Qt::Vertical.

+ Here is the call graph for this function:

◆ revert

void QSqlTableModel::revert ( )
overrideslot

This reimplemented slot is called by the item delegates when the user canceled editing the current row.

Reverts the changes if the model's strategy is set to OnRowChange or OnFieldChange. Does nothing for the OnManualSubmit strategy.

Use revertAll() to revert all pending changes for the OnManualSubmit strategy or revertRow() to revert a specific row.

See also
submit(), submitAll(), revertRow(), revertAll()

Definition at line 798 of file qsqltablemodel.cpp.

References d, OnFieldChange, OnRowChange, and revertAll().

+ Here is the call graph for this function:

◆ revertAll

void QSqlTableModel::revertAll ( )
slot

Reverts all pending changes.

See also
revert(), revertRow(), submitAll()

Definition at line 853 of file qsqltablemodel.cpp.

References d, i, and revertRow().

Referenced by revert(), and setEditStrategy().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ revertRow()

void QSqlTableModel::revertRow ( int row)
virtual

Reverts all changes for the specified row.

See also
revert(), revertAll(), submit(), submitAll()

Definition at line 867 of file qsqltablemodel.cpp.

References d.

Referenced by insertRecord(), removeRows(), revertAll(), and QSqlRelationalTableModel::revertRow().

+ Here is the caller graph for this function:

◆ rowCount()

int QSqlTableModel::rowCount ( const QModelIndex & parent = QModelIndex()) const
overridevirtual

\reimp

Reimplemented from QSqlQueryModel.

Definition at line 1170 of file qsqltablemodel.cpp.

References d, QAbstractTableModel::parent(), and QSqlQueryModel::rowCount().

Referenced by insertRecord(), insertRows(), QRelation::populateDictionary(), removeRows(), selectRow(), setData(), setRecord(), and updateRowInTable().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ select

bool QSqlTableModel::select ( )
virtualslot

Populates the model with data from the table that was set via setTable(), using the specified filter and sort condition, and returns true if successful; otherwise returns false.

Note
Calling select() will revert any unsubmitted changes and remove any inserted columns.
See also
setTable(), setFilter(), selectStatement()

Reimplemented in QRelatedTableModel, and QSqlRelationalTableModel.

Definition at line 334 of file qsqltablemodel.cpp.

References QSqlQueryModel::beginResetModel(), d, QSqlQueryModel::endResetModel(), QSqlQueryModel::lastError(), selectStatement(), and QSqlQueryModel::setQuery().

Referenced by removeColumns(), QRelatedTableModel::select(), QSqlRelationalTableModel::select(), setFilter(), sort(), and submitAll().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ selectRow

bool QSqlTableModel::selectRow ( int row)
virtualslot
Since
5.0

Refreshes row in the model with values from the database table row matching on primary key values. Without a primary key, all column values must match. If no matching row is found, the model will show an empty row.

Returns true if successful; otherwise returns false.

See also
select()

Definition at line 368 of file qsqltablemodel.cpp.

References Qt::CaseInsensitive, QSqlQueryModel::columnCount(), QAbstractItemModel::createIndex(), d, QAbstractItemModel::dataChanged(), emit, QAbstractItemModel::headerDataChanged(), QString::isEmpty(), primaryValues(), record(), rowCount(), selectStatement(), QString::size(), QSqlQueryModelSql::sp(), Qt::Vertical, QSqlQueryModelSql::where(), and QSqlDriver::WhereStatement.

Referenced by submitAll().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ selectStatement()

QString QSqlTableModel::selectStatement ( ) const
protectedvirtual

Returns the SQL SELECT statement used internally to populate the model.

The statement includes the filter and the {ORDER BY} clause.

See also
filter(), orderByClause()

Reimplemented in QSqlRelationalTableModel.

Definition at line 978 of file qsqltablemodel.cpp.

References QSqlQueryModelSql::concat(), d, QString::isEmpty(), orderByClause(), QSqlDriver::SelectStatement, QSqlError::StatementError, and QSqlQueryModelSql::where().

Referenced by select(), selectRow(), and QSqlRelationalTableModel::selectStatement().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setData()

bool QSqlTableModel::setData ( const QModelIndex & index,
const QVariant & value,
int role = Qt::EditRole )
overridevirtual

Sets the data for the item index for the role role to value.

For edit strategy OnFieldChange, an index may receive a change only if no other index has a cached change. Changes are submitted immediately. However, rows that have not yet been inserted in the database may be freely changed and are not submitted automatically. Submitted changes are not reverted upon failure.

For OnRowChange, an index may receive a change only if no other row has a cached change. Changes are not submitted automatically.

Returns true if value is equal to the current value. However, the value will not be submitted to the database.

Returns true if the value could be set or false on error, for example if index is out of bounds.

Returns false if the role is not Qt::EditRole. To set data for roles other than EditRole, either use a custom proxy model or subclass QSqlTableModel.

See also
editStrategy(), data(), submit(), submitAll(), revertRow()

Reimplemented from QAbstractItemModel.

Definition at line 539 of file qsqltablemodel.cpp.

References d, data(), QAbstractItemModel::dataChanged(), Qt::EditRole, emit, QSqlTableModelPrivate::Insert, QVariant::isNull(), Qt::ItemIsEditable, QSqlTableModelPrivate::None, OnFieldChange, QSqlQueryModel::record(), rowCount(), QAbstractItemModel::setData(), submit(), and QSqlTableModelPrivate::Update.

Referenced by clearItemData(), QSqlRelationalTableModel::setData(), and setRecord().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setEditStrategy()

void QSqlTableModel::setEditStrategy ( EditStrategy strategy)
virtual

Sets the strategy for editing values in the database to strategy.

This will revert any pending changes.

See also
editStrategy(), revertAll()

Definition at line 830 of file qsqltablemodel.cpp.

References d, and revertAll().

+ Here is the call graph for this function:

◆ setFilter()

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

Sets the current filter to filter.

The filter is a SQL WHERE clause without the keyword WHERE (for example, {name='Josephine')}.

If the model is already populated with data from a database, the model re-selects it with the new filter. Otherwise, the filter will be applied the next time select() is called.

See also
filter(), select(), selectStatement(), orderByClause()

Definition at line 1226 of file qsqltablemodel.cpp.

References d, filter(), and select().

+ Here is the call graph for this function:

◆ setPrimaryKey()

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

Protected method that allows subclasses to set the primary key to key.

Normally, the primary index is set automatically whenever you call setTable().

See also
primaryKey(), QSqlDatabase::primaryIndex()

Definition at line 897 of file qsqltablemodel.cpp.

References d.

◆ setRecord()

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

Applies values to the row in the model.

The source and target fields are mapped by field name, not by position in the record.

Note that the generated flags in values are preserved to determine whether the corresponding fields are used when changes are submitted to the database. By default, it is set to true for all fields in a QSqlRecord. You must set the flag to false using \l{QSqlRecord::}{setGenerated}(false) for any value in values, to save changes back to the database.

For edit strategies OnFieldChange and OnRowChange, a row may receive a change only if no other row has a cached change. Changes are submitted immediately. Submitted changes are not reverted upon failure.

Returns true if all the values could be set; otherwise returns false.

See also
record(), editStrategy()

Definition at line 1346 of file qsqltablemodel.cpp.

References QMap< Key, T >::constBegin(), QMap< Key, T >::constEnd(), QAbstractItemModel::createIndex(), d, QSqlTableModelPrivate::Delete, i, isDirty(), map, QSqlTableModelPrivate::None, OnManualSubmit, Q_ASSERT_X, QSqlQueryModel::record(), rowCount(), setData(), submit(), and QSqlTableModelPrivate::Update.

Referenced by insertRecord().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setSort()

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

Sets the sort order for column to order.

This does not affect the current data, to refresh the data using the new sort order, call select().

See also
select(), orderByClause()

Definition at line 932 of file qsqltablemodel.cpp.

References d, and QAbstractItemModel::order.

Referenced by sort().

+ Here is the caller graph for this function:

◆ setTable()

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

Sets the database table on which the model operates to tableName.

Does not select data from the table, but fetches its field information.

To populate the model with the table's data, call select().

Error information can be retrieved with \l lastError().

See also
select(), setFilter(), lastError()

Reimplemented in QSqlRelationalTableModel.

Definition at line 294 of file qsqltablemodel.cpp.

References clear(), d, QSqlError::StatementError, and tableName().

Referenced by QRelation::populateModel(), and QSqlRelationalTableModel::setTable().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ sort()

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

Sorts the data by column with the sort order order.

This will immediately select data, use setSort() to set a sort order without populating the model with data.

See also
setSort(), select(), orderByClause()

Definition at line 919 of file qsqltablemodel.cpp.

References select(), and setSort().

+ Here is the call graph for this function:

◆ submit

bool QSqlTableModel::submit ( )
overrideslot

This reimplemented slot is called by the item delegates when the user stopped editing the current row.

Submits the currently edited row if the model's strategy is set to OnRowChange or OnFieldChange. Does nothing for the OnManualSubmit strategy.

Use submitAll() to submit all pending changes for the OnManualSubmit strategy.

Returns true on success; otherwise returns false. Use lastError() to query detailed error information.

Does not automatically repopulate the model. Submitted rows are refreshed from the database on success.

See also
revert(), revertRow(), submitAll(), revertAll(), lastError()

Definition at line 777 of file qsqltablemodel.cpp.

References d, OnFieldChange, OnRowChange, and submitAll().

Referenced by removeRows(), setData(), and setRecord().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ submitAll

bool QSqlTableModel::submitAll ( )
slot

Submits all pending changes and returns true on success.

Returns false on error, detailed error information can be obtained with lastError().

In OnManualSubmit, on success the model will be repopulated. Any views presenting it will lose their selections.

Note: In OnManualSubmit mode, already submitted changes won't be cleared from the cache when submitAll() fails. This allows transactions to be rolled back and resubmitted without losing data.

See also
revertAll(), lastError()

Definition at line 703 of file qsqltablemodel.cpp.

References d, QSqlTableModelPrivate::Delete, deleteRowFromTable(), QSet< T >::end(), QSet< T >::find(), QSqlTableModelPrivate::Insert, insertRowIntoTable(), it, QSqlTableModelPrivate::None, OnManualSubmit, Q_ASSERT_X, select(), selectRow(), QSqlTableModelPrivate::Update, and updateRowInTable().

Referenced by submit().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ tableName()

QString QSqlTableModel::tableName ( ) const

Returns the name of the currently selected table.

Definition at line 319 of file qsqltablemodel.cpp.

References d.

Referenced by QSqlRelationalTableModel::selectStatement(), and setTable().

+ Here is the caller graph for this function:

◆ updateRowInTable()

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

Updates the given row in the currently active database table with the specified values.

Returns true if successful; otherwise returns false.

This is a low-level method that operates directly on the database and should not be called directly. Use setData() to update values. The model will decide depending on its edit strategy when to modify the database.

Note that only values that have the generated-flag set are updated. The generated-flag can be set with QSqlRecord::setGenerated() and tested with QSqlRecord::isGenerated().

See also
QSqlRecord::isGenerated(), setData()

Reimplemented in QSqlRelationalTableModel.

Definition at line 599 of file qsqltablemodel.cpp.

References beforeUpdate(), QSqlQueryModelSql::concat(), d, emit, QString::isEmpty(), QSqlDriver::PreparedQueries, primaryValues(), rowCount(), QSqlError::StatementError, QSqlDriver::UpdateStatement, and QSqlDriver::WhereStatement.

Referenced by submitAll(), and QSqlRelationalTableModel::updateRowInTable().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

The documentation for this class was generated from the following files: