Qt 4.8
qsqltablemodel.h
Go to the documentation of this file.
1 /****************************************************************************
2 **
3 ** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
4 ** Contact: http://www.qt-project.org/legal
5 **
6 ** This file is part of the QtSql module of the Qt Toolkit.
7 **
8 ** $QT_BEGIN_LICENSE:LGPL$
9 ** Commercial License Usage
10 ** Licensees holding valid commercial Qt licenses may use this file in
11 ** accordance with the commercial license agreement provided with the
12 ** Software or, alternatively, in accordance with the terms contained in
13 ** a written agreement between you and Digia. For licensing terms and
14 ** conditions see http://qt.digia.com/licensing. For further information
15 ** use the contact form at http://qt.digia.com/contact-us.
16 **
17 ** GNU Lesser General Public License Usage
18 ** Alternatively, this file may be used under the terms of the GNU Lesser
19 ** General Public License version 2.1 as published by the Free Software
20 ** Foundation and appearing in the file LICENSE.LGPL included in the
21 ** packaging of this file. Please review the following information to
22 ** ensure the GNU Lesser General Public License version 2.1 requirements
23 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
24 **
25 ** In addition, as a special exception, Digia gives you certain additional
26 ** rights. These rights are described in the Digia Qt LGPL Exception
27 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
28 **
29 ** GNU General Public License Usage
30 ** Alternatively, this file may be used under the terms of the GNU
31 ** General Public License version 3.0 as published by the Free Software
32 ** Foundation and appearing in the file LICENSE.GPL included in the
33 ** packaging of this file. Please review the following information to
34 ** ensure the GNU General Public License version 3.0 requirements will be
35 ** met: http://www.gnu.org/copyleft/gpl.html.
36 **
37 **
38 ** $QT_END_LICENSE$
39 **
40 ****************************************************************************/
41 
42 #ifndef QSQLTABLEMODEL_H
43 #define QSQLTABLEMODEL_H
44 
45 #include <QtSql/qsqldatabase.h>
46 #include <QtSql/qsqlquerymodel.h>
47 
49 
51 
52 QT_MODULE(Sql)
53 
55 class QSqlRecord;
56 class QSqlField;
57 class QSqlIndex;
58 
60 {
61  Q_OBJECT
63 
64 public:
65  enum EditStrategy {OnFieldChange, OnRowChange, OnManualSubmit};
66 
67  explicit QSqlTableModel(QObject *parent = 0, QSqlDatabase db = QSqlDatabase());
68  virtual ~QSqlTableModel();
69 
70  virtual bool select();
71 
72  virtual void setTable(const QString &tableName);
73  QString tableName() const;
74 
75  Qt::ItemFlags flags(const QModelIndex &index) const;
76 
77  QVariant data(const QModelIndex &idx, int role = Qt::DisplayRole) const;
78  bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole);
79 
80  QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const;
81 
82  bool isDirty(const QModelIndex &index) const;
83  void clear();
84 
85  virtual void setEditStrategy(EditStrategy strategy);
86  EditStrategy editStrategy() const;
87 
88  QSqlIndex primaryKey() const;
89  QSqlDatabase database() const;
90  int fieldIndex(const QString &fieldName) const;
91 
92  void sort(int column, Qt::SortOrder order);
93  virtual void setSort(int column, Qt::SortOrder order);
94 
95  QString filter() const;
96  virtual void setFilter(const QString &filter);
97 
98  int rowCount(const QModelIndex &parent = QModelIndex()) const;
99 
100  bool removeColumns(int column, int count, const QModelIndex &parent = QModelIndex());
101  bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex());
102  bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex());
103 
104  bool insertRecord(int row, const QSqlRecord &record);
105  bool setRecord(int row, const QSqlRecord &record);
106 
107  virtual void revertRow(int row);
108 
109 public Q_SLOTS:
110  bool submit();
111  void revert();
112 
113  bool submitAll();
114  void revertAll();
115 
116 Q_SIGNALS:
117  void primeInsert(int row, QSqlRecord &record);
118 
119  void beforeInsert(QSqlRecord &record);
120  void beforeUpdate(int row, QSqlRecord &record);
121  void beforeDelete(int row);
122 
123 protected:
125 
126  virtual bool updateRowInTable(int row, const QSqlRecord &values);
127  virtual bool insertRowIntoTable(const QSqlRecord &values);
128  virtual bool deleteRowFromTable(int row);
129  virtual QString orderByClause() const;
130  virtual QString selectStatement() const;
131 
132  void setPrimaryKey(const QSqlIndex &key);
133  void setQuery(const QSqlQuery &query);
134  QModelIndex indexInQuery(const QModelIndex &item) const;
135 };
136 
138 
140 
141 #endif // QSQLTABLEMODEL_H
The QVariant class acts like a union for the most common Qt data types.
Definition: qvariant.h:92
The QSqlIndex class provides functions to manipulate and describe database indexes.
Definition: qsqlindex.h:55
QModelIndex indexInQuery(const QModelIndex &item) const
Returns the index of the value in the database result set for the given item in the model...
EditStrategy
This enum type describes which strategy to choose when editing values in the database.
#define QT_END_NAMESPACE
This macro expands to.
Definition: qglobal.h:90
int rowCount(const QModelIndex &parent=QModelIndex()) const
If the database supports returning the size of a query (see QSqlDriver::hasFeature()), the number of rows of the current query is returned.
#define QT_MODULE(x)
Definition: qglobal.h:2783
#define QT_BEGIN_HEADER
Definition: qglobal.h:136
The QSqlQuery class provides a means of executing and manipulating SQL statements.
Definition: qsqlquery.h:63
int select(int, fd_set *, fd_set *, fd_set *, struct timeval *)
The QSqlDatabase class represents a connection to a database.
Definition: qsqldatabase.h:78
virtual bool setData(const QModelIndex &index, const QVariant &value, int role=Qt::EditRole)
Sets the role data for the item at index to value.
The QSqlRecord class encapsulates a database record.
Definition: qsqlrecord.h:58
#define Q_SLOTS
Definition: qobjectdefs.h:71
The QString class provides a Unicode character string.
Definition: qstring.h:83
QVariant data(const QModelIndex &item, int role=Qt::DisplayRole) const
Returns the value for the specified item and role.
The QObject class is the base class of all Qt objects.
Definition: qobject.h:111
#define Q_SIGNALS
Definition: qobjectdefs.h:72
virtual bool submit()
Lets the model know that it should submit cached information to permanent storage.
virtual void sort(int column, Qt::SortOrder order=Qt::AscendingOrder)
Sorts the model by column in the given order.
#define Q_SQL_EXPORT
Definition: qglobal.h:1451
virtual Qt::ItemFlags flags(const QModelIndex &index) const
Returns the item flags for the given index.
SortOrder
Definition: qnamespace.h:189
The QSqlQueryModel class provides a read-only data model for SQL result sets.
#define QT_BEGIN_NAMESPACE
This macro expands to.
Definition: qglobal.h:89
virtual bool removeRows(int row, int count, const QModelIndex &parent=QModelIndex())
On models that support this, removes count rows starting with the given row under parent parent from ...
quint16 values[128]
virtual bool insertRows(int row, int count, const QModelIndex &parent=QModelIndex())
On models that support this, inserts count rows into the model before the given row.
#define Q_OBJECT
Definition: qobjectdefs.h:157
void setQuery(const QSqlQuery &query)
Resets the model and sets the data provider to be the given query.
virtual void clear()
Clears the model and releases any acquired resource.
QVariant headerData(int section, Qt::Orientation orientation, int role=Qt::DisplayRole) const
Returns the header data for the given role in the section of the header with the specified orientatio...
int key
The QModelIndex class is used to locate data in a data model.
QFuture< void > filter(Sequence &sequence, FilterFunction filterFunction)
quint16 index
The QSqlTableModel class provides an editable data model for a single database table.
#define Q_DECLARE_PRIVATE(Class)
Definition: qglobal.h:2467
The QSqlField class manipulates the fields in SQL database tables and views.
Definition: qsqlfield.h:56
Orientation
Definition: qnamespace.h:174
virtual void revert()
Lets the model know that it should discard cached information.
#define QT_END_HEADER
Definition: qglobal.h:137
bool removeColumns(int column, int count, const QModelIndex &parent=QModelIndex())
Removes count columns from the model starting from position column.