5#ifndef QSQLRELATIONALTABLEMODEL_H
6#define QSQLRELATIONALTABLEMODEL_H
8#include <QtSql/qtsqlglobal.h>
9#include <QtSql/qsqltablemodel.h>
11#include <QtCore/qtypeinfo.h>
22 QSqlRelation(
const QString &aTableName,
const QString &indexCol,
23 const QString &displayCol)
24 : tName(aTableName), iColumn(indexCol), dColumn(displayCol) {}
26 void swap(QSqlRelation &other)
noexcept
28 tName.swap(other.tName);
29 iColumn.swap(other.iColumn);
30 dColumn.swap(other.dColumn);
33 inline QString tableName()
const
35 inline QString indexColumn()
const
37 inline QString displayColumn()
const
39 bool isValid()
const noexcept
40 {
return !(tName.isEmpty() || iColumn.isEmpty() || dColumn.isEmpty()); }
42 QString tName, iColumn, dColumn;
58 explicit QSqlRelationalTableModel(QObject *parent =
nullptr,
59 const QSqlDatabase &db = QSqlDatabase());
60 virtual ~QSqlRelationalTableModel();
62 QVariant data(
const QModelIndex &item,
int role = Qt::DisplayRole)
const override;
63 bool setData(
const QModelIndex &item,
const QVariant &value,
int role = Qt::EditRole) override;
64 bool removeColumns(
int column,
int count,
const QModelIndex &parent = QModelIndex()) override;
66 void clear() override;
67 bool select() override;
69 void setTable(
const QString &tableName) override;
70 virtual void setRelation(
int column,
const QSqlRelation &relation);
71 QSqlRelation relation(
int column)
const;
72 virtual QSqlTableModel *relationModel(
int column)
const;
73 void setJoinMode( QSqlRelationalTableModel::JoinMode joinMode );
76 void revertRow(
int row) override;
79 QString selectStatement()
const override;
80 bool updateRowInTable(
int row,
const QSqlRecord &values) override;
81 bool insertRowIntoTable(
const QSqlRecord &values) override;
82 QString orderByClause()
const override;
85 Q_DECLARE_PRIVATE(QSqlRelationalTableModel)
QList< QSharedPointer< QRelation > > relations
void clearCache() override
int nameToIndex(const QString &name) const override
void translateFieldNames(QSqlRecord &values) const
void revertCachedRow(int row) override
static const QString relTablePrefix(int i)
The QSqlRelationalTableModel class provides an editable data model for a single database table,...
QT_REQUIRE_CONFIG(sqlmodel)
QSqlRelationalTableModelSql SqlrTm
void populateDictionary()
QRelatedTableModel * model
bool isDictionaryInitialized() const
QHash< QString, QVariant > dictionary
void init(QSqlRelationalTableModel *parent, const QSqlRelation &relation, int column)