Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qsqltablemodel.h
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3// Qt-Security score:significant reason:default
4
5#ifndef QSQLTABLEMODEL_H
6#define QSQLTABLEMODEL_H
7
8#include <QtSql/qtsqlglobal.h>
9#include <QtSql/qsqldatabase.h>
10#include <QtSql/qsqlquerymodel.h>
11
13
14QT_BEGIN_NAMESPACE
15
16
17class QSqlTableModelPrivate;
18class QSqlRecord;
19class QSqlField;
20class QSqlIndex;
21
22class Q_SQL_EXPORT QSqlTableModel: public QSqlQueryModel
23{
24 Q_OBJECT
25 Q_DECLARE_PRIVATE(QSqlTableModel)
26 Q_MOC_INCLUDE(<QtSql/qsqlrecord.h>)
27
28public:
29 enum EditStrategy {OnFieldChange, OnRowChange, OnManualSubmit};
30
31 explicit QSqlTableModel(QObject *parent = nullptr, const QSqlDatabase &db = QSqlDatabase());
32 virtual ~QSqlTableModel();
33
34 virtual void setTable(const QString &tableName);
35 QString tableName() const;
36
37 Qt::ItemFlags flags(const QModelIndex &index) const override;
38
39 QSqlRecord record() const;
40 QSqlRecord record(int row) const;
41 QVariant data(const QModelIndex &idx, int role = Qt::DisplayRole) const override;
42 bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) override;
43 bool clearItemData(const QModelIndex &index) override;
44
45 QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override;
46
47 bool isDirty() const;
48 bool isDirty(const QModelIndex &index) const;
49
50 void clear() override;
51
52 virtual void setEditStrategy(EditStrategy strategy);
53 EditStrategy editStrategy() const;
54
55 QSqlIndex primaryKey() const;
56 QSqlDatabase database() const;
57 int fieldIndex(const QString &fieldName) const;
58
59 void sort(int column, Qt::SortOrder order) override;
60 virtual void setSort(int column, Qt::SortOrder order);
61
62 QString filter() const;
63 virtual void setFilter(const QString &filter);
64
65 int rowCount(const QModelIndex &parent = QModelIndex()) const override;
66
67 bool removeColumns(int column, int count, const QModelIndex &parent = QModelIndex()) override;
68 bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex()) override;
69 bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex()) override;
70
71 bool insertRecord(int row, const QSqlRecord &record);
72 bool setRecord(int row, const QSqlRecord &record);
73
74 virtual void revertRow(int row);
75
76public Q_SLOTS:
77 virtual bool select();
78 virtual bool selectRow(int row);
79
80 bool submit() override;
81 void revert() override;
82
83 bool submitAll();
84 void revertAll();
85
86Q_SIGNALS:
87 void primeInsert(int row, QSqlRecord &record);
88
89 void beforeInsert(QSqlRecord &record);
90 void beforeUpdate(int row, QSqlRecord &record);
91 void beforeDelete(int row);
92
93protected:
94 QSqlTableModel(QSqlTableModelPrivate &dd, QObject *parent = nullptr, const QSqlDatabase &db = QSqlDatabase());
95
96 virtual bool updateRowInTable(int row, const QSqlRecord &values);
97 virtual bool insertRowIntoTable(const QSqlRecord &values);
98 virtual bool deleteRowFromTable(int row);
99 virtual QString orderByClause() const;
100 virtual QString selectStatement() const;
101
102 void setPrimaryKey(const QSqlIndex &key);
103#if QT_SQL_REMOVED_SINCE(6, 5)
104 void setQuery(const QSqlQuery &query);
105#endif
106 QModelIndex indexInQuery(const QModelIndex &item) const override;
107 QSqlRecord primaryValues(int row) const;
108};
109
110QT_END_NAMESPACE
111
112#endif // QSQLTABLEMODEL_H
The QSqlTableModel class provides an editable data model for a single database table.
QT_REQUIRE_CONFIG(sqlmodel)