Qt 4.8
qsqlrelationaltablemodel.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 QSQLRELATIONALTABLEMODEL_H
43 #define QSQLRELATIONALTABLEMODEL_H
44 
45 #include <QtSql/qsqltablemodel.h>
46 
48 
50 
51 QT_MODULE(Sql)
52 
54 {
55 public:
57  QSqlRelation(const QString &aTableName, const QString &indexCol,
58  const QString &displayCol)
59  : tName(aTableName), iColumn(indexCol), dColumn(displayCol) {}
60  inline QString tableName() const
61  { return tName; }
62  inline QString indexColumn() const
63  { return iColumn; }
64  inline QString displayColumn() const
65  { return dColumn; }
66  inline bool isValid() const
67  { return !(tName.isEmpty() || iColumn.isEmpty() || dColumn.isEmpty()); }
68 private:
69  QString tName, iColumn, dColumn;
70 };
71 
73 
75 {
76  Q_OBJECT
77 
78 public:
79  enum JoinMode {
81  LeftJoin
82  };
83 
84  explicit QSqlRelationalTableModel(QObject *parent = 0,
85  QSqlDatabase db = QSqlDatabase());
86  virtual ~QSqlRelationalTableModel();
87 
88  QVariant data(const QModelIndex &item, int role = Qt::DisplayRole) const;
89  bool setData(const QModelIndex &item, const QVariant &value, int role = Qt::EditRole);
90  bool removeColumns(int column, int count, const QModelIndex &parent = QModelIndex());
91 
92  void clear();
93  bool select();
94 
95  void setTable(const QString &tableName);
96  virtual void setRelation(int column, const QSqlRelation &relation);
97  QSqlRelation relation(int column) const;
98  virtual QSqlTableModel *relationModel(int column) const;
99  void setJoinMode( QSqlRelationalTableModel::JoinMode joinMode );
100 
101 public Q_SLOTS:
102  void revertRow(int row);
103 
104 protected:
105  QString selectStatement() const;
106  bool updateRowInTable(int row, const QSqlRecord &values);
107  bool insertRowIntoTable(const QSqlRecord &values);
108  QString orderByClause() const;
109 
110 private:
112 };
113 
115 
117 
118 #endif // QSQLRELATIONALTABLEMODEL_H
The QVariant class acts like a union for the most common Qt data types.
Definition: qvariant.h:92
The QSqlRelationalTableModel class provides an editable data model for a single database table...
QSqlRelation(const QString &aTableName, const QString &indexCol, const QString &displayCol)
Constructs a QSqlRelation object, where tableName is the SQL table name to which a foreign key refers...
virtual QString selectStatement() const
Returns the SQL SELECT statement used internally to populate the model.
#define QT_END_NAMESPACE
This macro expands to.
Definition: qglobal.h:90
#define QT_MODULE(x)
Definition: qglobal.h:2783
QSqlRelation()
Constructs an invalid QSqlRelation object.
#define QT_BEGIN_HEADER
Definition: qglobal.h:136
QString tableName() const
Returns the name of the table to which a foreign key refers.
The QSqlDatabase class represents a connection to a database.
Definition: qsqldatabase.h:78
JoinMode
This enum specifies the type of mode to use when joining two tables.
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
The QObject class is the base class of all Qt objects.
Definition: qobject.h:111
#define Q_SQL_EXPORT
Definition: qglobal.h:1451
void clear()
Reimplemented Function
#define QT_BEGIN_NAMESPACE
This macro expands to.
Definition: qglobal.h:89
virtual void setTable(const QString &tableName)
Sets the database table on which the model operates to tableName.
virtual bool insertRowIntoTable(const QSqlRecord &values)
Inserts the values values into the currently active database table.
virtual bool updateRowInTable(int row, const QSqlRecord &values)
Updates the given row in the currently active database table with the specified values.
quint16 values[128]
virtual QString orderByClause() const
Returns an SQL ORDER BY clause based on the currently set sort order.
The QSqlRelation class stores information about an SQL foreign key.
bool isValid() const
Returns true if the QSqlRelation object is valid; otherwise returns false.
#define Q_OBJECT
Definition: qobjectdefs.h:157
bool removeColumns(int column, int count, const QModelIndex &parent=QModelIndex())
Removes count columns from the parent model, starting at index column.
QString indexColumn() const
Returns the index column from table tableName() to which a foreign key refers.
bool setData(const QModelIndex &index, const QVariant &value, int role=Qt::EditRole)
Sets the data for the item index for the role role to value.
The QModelIndex class is used to locate data in a data model.
The QSqlTableModel class provides an editable data model for a single database table.
virtual bool select()
Populates the model with data from the table that was set via setTable(), using the specified filter ...
QString displayColumn() const
Returns the column from table tableName() that should be presented to the user instead of a foreign k...
#define Q_DECLARE_PRIVATE(Class)
Definition: qglobal.h:2467
virtual void revertRow(int row)
Reverts all changes for the specified row.
#define class
#define QT_END_HEADER
Definition: qglobal.h:137
QVariant data(const QModelIndex &idx, int role=Qt::DisplayRole) const
Reimplemented Function