123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- #ifndef QSQLRELATIONALTABLEMODEL_H
- #define QSQLRELATIONALTABLEMODEL_H
- #include <QtSql/qsqltablemodel.h>
- QT_BEGIN_NAMESPACE
- class Q_SQL_EXPORT QSqlRelation
- {
- public:
- QSqlRelation() {}
- QSqlRelation(const QString &aTableName, const QString &indexCol,
- const QString &displayCol)
- : tName(aTableName), iColumn(indexCol), dColumn(displayCol) {}
- inline QString tableName() const
- { return tName; }
- inline QString indexColumn() const
- { return iColumn; }
- inline QString displayColumn() const
- { return dColumn; }
- inline bool isValid() const
- { return !(tName.isEmpty() || iColumn.isEmpty() || dColumn.isEmpty()); }
- private:
- QString tName, iColumn, dColumn;
- };
- class QSqlRelationalTableModelPrivate;
- class Q_SQL_EXPORT QSqlRelationalTableModel: public QSqlTableModel
- {
- Q_OBJECT
- public:
- enum JoinMode {
- InnerJoin,
- LeftJoin
- };
- explicit QSqlRelationalTableModel(QObject *parent = Q_NULLPTR,
- QSqlDatabase db = QSqlDatabase());
- virtual ~QSqlRelationalTableModel();
- QVariant data(const QModelIndex &item, int role = Qt::DisplayRole) const Q_DECL_OVERRIDE;
- bool setData(const QModelIndex &item, const QVariant &value, int role = Qt::EditRole) Q_DECL_OVERRIDE;
- bool removeColumns(int column, int count, const QModelIndex &parent = QModelIndex()) Q_DECL_OVERRIDE;
- void clear() Q_DECL_OVERRIDE;
- bool select() Q_DECL_OVERRIDE;
- void setTable(const QString &tableName) Q_DECL_OVERRIDE;
- virtual void setRelation(int column, const QSqlRelation &relation);
- QSqlRelation relation(int column) const;
- virtual QSqlTableModel *relationModel(int column) const;
- void setJoinMode( QSqlRelationalTableModel::JoinMode joinMode );
- public Q_SLOTS:
- void revertRow(int row) Q_DECL_OVERRIDE;
- protected:
- QString selectStatement() const Q_DECL_OVERRIDE;
- bool updateRowInTable(int row, const QSqlRecord &values) Q_DECL_OVERRIDE;
- bool insertRowIntoTable(const QSqlRecord &values) Q_DECL_OVERRIDE;
- QString orderByClause() const Q_DECL_OVERRIDE;
- private:
- Q_DECLARE_PRIVATE(QSqlRelationalTableModel)
- };
- QT_END_NAMESPACE
- #endif
|